Announcement

Collapse
No announcement yet.

XML Datei zerlegen

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Das ist kein sinnvolles vorgehen bei 8 GB Dateien jeweils die Tags zu suchen.
    ja, es soll id bis id stehen:
    verstehe ich nicht in Zusammenhang mit dem leader-Tag
    fso=FileSystemObjecte damit wird imho nicht im XML gesucht. Und eine Volltextsuche über das Filesystem ist ebenfalls recht sinnlos
    Christian

    Comment


    • #17
      Mit den Werkzeugen aus dem Paket xml-twig-tools kann man vielleicht auch was anfangen.

      Beispiel:
      Code:
      [email protected]:~$ sudo apt-get install xml-twig-tools
      
      [email protected]:~$ wget http://aiweb.cs.washington.edu/research/projects/xmltk/xmldata/data/SwissProt/SwissProt.xml
      
      [email protected]:~$ ls -lh SwissProt.xml
      -rw-r--r-- 1 user user 110M Jan  2  2002 SwissProt.xml
      
      [email protected]:~$ ls -lh SwissProt.xml
      -rw-r--r-- 1 user user110M Jan  2  2002 SwissProt.xml
      [email protected]:~$ xml_split -g 10000 SwissProt.xml
      [email protected]:~$ ls -lh SwissProt*
      -rw-r--r-- 1 user user  214 Okt  1 14:33 SwissProt-00.xml
      -rw-r--r-- 1 user user 23M Okt  1 14:33 SwissProt-01.xml
      -rw-r--r-- 1 user user 22M Okt  1 14:33 SwissProt-02.xml
      -rw-r--r-- 1 user user 22M Okt  1 14:33 SwissProt-03.xml
      -rw-r--r-- 1 user user 23M Okt  1 14:33 SwissProt-04.xml
      -rw-r--r-- 1 user user 22M Okt  1 14:33 SwissProt-05.xml
      -rw-r--r-- 1 user user 110M Jan  2  2002 SwissProt.xml
      
      [email protected]:~$ cat SwissProt-00.xml
      <root>
      <?merge subdocs = 0 :SwissProt-01.xml?>
      <?merge subdocs = 0 :SwissProt-02.xml?>
      <?merge subdocs = 0 :SwissProt-03.xml?>
      <?merge subdocs = 0 :SwissProt-04.xml?>
      <?merge subdocs = 0 :SwissProt-05.xml?></root>
      [email protected]:~$
      
      [email protected]:~$ head -n 10 SwissProt-01.xml
      <xml_split:root xmlns:xml_split="http://xmltwig.com/xml_split">
        <Entry id="100K_RAT" class="STANDARD" mtype="PRT" seqlen="889">
       <AC>Q62671</AC>
       <Mod date="01-NOV-1997" Rel="35" type="Created"></Mod>
       <Mod date="01-NOV-1997" Rel="35" type="Last sequence update"></Mod>
       <Mod date="15-JUL-1999" Rel="38" type="Last annotation update"></Mod>
       <Descr>100 KDA PROTEIN (EC 6.3.2.-)</Descr>
       <Species>Rattus norvegicus (Rat)</Species>
       <Org>Eukaryota</Org>
       <Org>Metazoa</Org>
      
      [email protected]:~$ tail -n 10 SwissProt-01.xml
        </DISULFID>
        <DISULFID from="26" to="52">
         <Descr>BY SIMILARITY</Descr>
        </DISULFID>
        <MOD_RES from="73" to="73">
         <Descr>AMIDATION</Descr>
        </MOD_RES>
       </Features>
      </Entry>
      </xml_split:root>
      Zuletzt editiert von defo; 02.10.2019, 15:02.
      Gruß, defo

      Comment


      • #18
        Danke defo, aber ich verstehe das nicht, was du grade gesagt hast.
        Ich möchte nur ein Tool schreiben, der mir die Datei auf kleine Deteien zerlegt/aufteilt. Ich weiss, dass es geht, aber irgendwie weiss ich es nicht wie ... ich kann einfach nicht programmieren.

        Comment


        • #19
          Was ich geschrieben habe (im letzten Beitrag) bezieht sich auf fertige, kostenlose Programme, die man unter Linux (hier beschrieben: debian / ubuntu Distribution) installieren kann.
          Man braucht eigentlich nur einen Befehl (programm) xml_split, das wahrscheinlich das macht, was Du möchtest.
          Ich habe den ganzen Weg mit einer Beispieldatei beschrieben
          - Installation des Splitprogramms
          - Download einer Beispieldatei
          - Verarbeitung
          - Auflistung der Ergebnisdateien
          - Exemplarische Anzeige eines Dateianfangs und -endes
          Gruß, defo

          Comment


          • #20
            Das tool entfernt offenbar das Root Element und die Splitdatei mit Endung 00 beschreibt die Zusammensetzung, die wieder das komplette File darstellt.
            Nicht ganz richtig: Die Splitdateien sind dann jeweils mit einem eigenen Root Element versehen.

            neben xml_split gibt es in dem installierten Paket weitere Toos, die z.B. auch wieder das Mergen erlauben.

            Die 100MB Datei hat als Beispiel schon ein einige Sekunden gedauert. Aber Du musst Dich so oder so auf eine größere Verarbeitungsdauer einstellen.
            Gruß, defo

            Comment


            • #21
              Originally posted by Anna85 View Post
              irgendwie weiss ich es nicht wie ... ich kann einfach nicht programmieren.
              Was ich vorgeschlagen habe, ist keine Programmierung, sondern die Nutzung eines Programms/Tools.
              Man braucht nur einen Linux Rechner, wo man das eben installieren kann. Oder einen Windows Rechner mit Windows Subsystem Linux.
              Und der Rechner sollte bei 8Gb Daten wohl nicht allzu schwächlich sein, besonders wenn man auf ein Verfahren setzt, dass in irgendeiner Form den Inhalt analysiert.

              Ein anderer Ansatz- das war mein erster Vorschlag- ist die bloße Zerteilung, nach der Du ja im Grunde gefragt hast. Anschließend manuelle Korrektur (im Editor oder mit anderen Werkzeugen)
              Dabei könnte man so vorgehen, dass man nicht in 2GB Dateien zerteilt, sondern eine Größe wählt, die ein halbwegs ordentlicher Editor schluckt, nehmen wir 1 GB.
              Man zerhackt die Datein ohne auf den Inhalt zu achten in 8 Teile, das geht sehr schnell.
              Dann nimmt man jeweils Anfang und Ende, verschiebt verstümmelte Daten zur einen oder anderen Seite und ergänzt das/die Root Element(e) jeweils.

              Auch dabei muss man sich fragen, welchen Sinn es macht. Eine XML Datei von 1GB Größe dürfte nur von wenigen Programmen zu verarbeiten sein. Die Verarbeitung von XML beruht meist auf dem vollständigen Laden und Abbilden der Struktur im Hauptspeicher. Das ist auch bei deutlich weniger als 1GB Dateigröße nicht einfach.

              Noch besser wäre natürlich, von vornherein kleinere Dateien zu haben.
              Gruß, defo

              Comment


              • #22
                Crosspost
                https://www.mycsharp.de/wbb2/thread.php?threadid=122226
                Christian

                Comment

                Working...
                X