• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

XML-Datei auslesen

A

Anonymous

Gast
hallo,
ich möchte in einem script dynamisch bestimmte sachen im betrieb auslesen.

die notwendigen parameter liegen in in einer xml datei vor

<caption>Konqueror</caption>
<...>xyz</...>

wie kriegt man es hin nur die parameter zwischen den tags auszulesen?!?
es ist nicht bekannt wie lang der text ist, oder wieviele wörter es sind.

mit grep isoliere ich die zeile, aber ich kriege die <caption> .... </caption>

nicht weg??

danke!
 
OP
A

Anonymous

Gast
XML liest man mit Java z.B. mit jdom aus.

In dem Buch "Java ist auch eine Insel" (kostenloser download) sind die verschiedenen Möglichkeiten recht gut beschrieben.

Peter
 

Yogi_B

Member
Moin,

also wenn Du Java nimmst, haste einen XML-Parser dabei. Sowas kannst dir als DOM oder als SAX-Parser zusammen bauen.

Mit C++ und Qt haste nette Klassen dafür, bei C nimmst halt libxml.

Wenn Dich wirklich nur ein Zeile interessiert, würd ich aber auch ehr mit grep dran gehen und Rest halt von Hand parsen.

cu
Yogi
 
OP
A

Anonymous

Gast
Sorry, hab mich unklar ausgedrückt!

Also ich muss es schon mit einem Shell-Script erledigen.
In dem Script brauche ich die Angaben die in der xml-Datei liegen.

Und wie gesagt ich die Zeile habe ich mit grep isoliert, jetzt geht es darum nur den Inhalt zwischen den Tags zu bekommen.

Bedinngung ist, dass nicht bekannt ist was und wieviel drin steht.

Beispiel:
Script xyz:

Code:
Pfad = /das was in xml-Datei zwischen den Tag <pfad> das hier </pfad> steht

Ich weis leider nicht wie ich den Inhalt isolieren kann!
Mit awk{print $1} kriege ich leider nicht hin, wenn es mehrere wörter sind.

Einer eine Idee ?
Danke!
 
Hallo,
Ich habe mittlerweile den Ihalt den ich haben wollte mit sed isoliert.
Code:
sed -e "s/^\s*<caption>//" -e "s/<\/caption>\s*$//"

Nun ist der Inhalt zwischen den Tags teilweise ausführbares für die Shell.
Jetzt lese ich in einem Script zur Laufzeit den Inhalt der Datei aus....
Mit welchem Befehl kann ich das ausgelesene ausführen?!?

Beispiel:
Datei:
<dateiinhalt>echo $USER</dateiinhalt>

Script:
Hier soll dann nicht das "echo $USER" stehen, sondern das soll ausgeführt werden.

Kann einer einen Tip geben?

Gruß

Lösung für Einzeiler-Tags:
Ich arbeite nun mit den backsticks, und damit lässt sich der Inhalt ausführen.
Code:
`cat /Datei.txt | grep caption |sed -e "s/^\s*<caption>//" -e "s/<\/caption>\s*$//"`

Wenn es aber mehrzeiliger Inhalt ist ?!?
Wer hat eine Lösung/Lösungsansatz?!?

Gruß
 
Oben