Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

XML-Datei auslesen

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Minotaurus

XML-Datei auslesen

Beitrag von Minotaurus »

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!
peedee

Beitrag von peedee »

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
Member
Beiträge: 60
Registriert: 9. Mai 2004, 16:18

Beitrag von Yogi_B »

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
Minotaurus

Beitrag von Minotaurus »

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: Alles auswählen

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!
Minotaurus79
Newbie
Newbie
Beiträge: 3
Registriert: 1. Mär 2004, 12:48
Kontaktdaten:

Beitrag von Minotaurus79 »

Hallo,
Ich habe mittlerweile den Ihalt den ich haben wollte mit sed isoliert.

Code: Alles auswählen

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: Alles auswählen

`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ß
Antworten