Nicko Geschrieben 24. August 2019 Geschrieben 24. August 2019 Hallo, ich suche unter Ubuntu eine Möglichkeit wie ich den kompletten Inhalt zwischen Tags einer XML-Datei zur Weiterverarbeitung auslesen kann. Das ganze sollte tag-weise passieren. Angenommen ich das dieses Bsp. hier: <tag1> <tag2> <name>muster</name> <vorname>max</vorname> </tag2> <tag2> <name>mueller</name> <vorname>thomas</vorname> </tag2> </tag1> Das möchte ich alles zwischen 'tag2' extrahieren, die < und > der Tags vornamen und nachname aber so belassen. Je ein Tag soll exportiert und entweder gleich weiterverwurstet werden oder in eine separate Datei geschrieben und dann weiterverarbeitet werden. Mir den mir bekannten Werkzeugen aus der Shell komm ich hier nicht weiter. Ich habe diverse Versuche mit xmlstarlet und xml_grep gemacht, das beste Ergebnis mit xmlstarlet sel -t -v '//tag1/tag2' sieht so aus muster max mueller thomas allerdings waren die Werte weiter eingerückt, die vielen Leerzeilen dazwischen waren auch so. Zum einen wird hier allen zusammen ausgegeben und nicht der Inhalt der Tags einzeln extrahiert und zum anderen sollen die Tags innerhalb der zu extrahierenden Tags erhalten bleiben. Zitieren
Martin Gasse Geschrieben 24. August 2019 Geschrieben 24. August 2019 Hi, ich habe das hier gefunden: https://stackoverflow.com/questions/1890690/extracting-and-dumping-elements-using-xmlstarlet Du benötigst also die -c (copy) option. Details siehe hier: http://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html Gruß, Martin Zitieren
Nicko Geschrieben 25. August 2019 Autor Geschrieben 25. August 2019 Danke, das belässt erstmal die Tags wie sie sind. Die Ausgabe beinhaltet aber weiter alle. Ich möchte gerne 2 Ausgaben haben, so: <tag2> <name>muster</name> <vorname>max</vorname> </tag2> und <tag2> <name>mueller</name> <vorname>thomas</vorname> </tag2> Zitieren
Martin Gasse Geschrieben 25. August 2019 Geschrieben 25. August 2019 Hi, du benötigst dafür Grundlagen von XPATH Ausdrücken. Man kann den ersten Tag auswählen indem man folgendes macht: '//tag1/tag2[1]' Gruß, Martin Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.