Veröffentlicht 24. August 20196 j 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.
24. August 20196 j 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
25. August 20196 j Autor 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>
25. August 20196 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.