Aktuelle SeiteWähle Forum / Perl / Allgemeines zu Perl / XML - Datei

XML - Datei


Bild von Hawk

By Hawk - Posted on 14 Februar 2010

Dann bin ich mal der Erste hier - Das neue Forum schaut ziemlich "anders" aus - besser.

Mein Problem ist, daß ich gerne eine XML-Datei auslesen möchte. Das File kommt von einer externen Quelle auf die ich keinen Zugriff habe und ist nicht ganz "sauber"

<?xml version="1.0" encoding="iso-8859-1"?>
<hosts>
<network_objects_object>host2<DAG>false</DAG>
<SNMP>
host2
<read_community><![CDATA[]]></read_community>
<write_community><![CDATA[]]></write_community>
</SNMP><add_adtr_rule>false</add_adtr_rule>
<color><![CDATA[blue]]></color>
<comments><![CDATA[This is a sample host2]]></comments><cp_products_installed>false</cp_products_installed>
<data_source><![CDATA[not-installed]]></data_source>
<ipaddr><![CDATA[2.2.2.2, 1.1.1.1]]></ipaddr>
<type><![CDATA[host]]></type>
</network_objects_object>
<network_objects_object>host3<DAG>false</DAG>
<SNMP>
host3
<read_community><![CDATA[]]></read_community>
<write_community><![CDATA[]]></write_community>
</SNMP><add_adtr_rule>false</add_adtr_rule>
<color><![CDATA[blue]]></color>
<comments><![CDATA[This is a sample host3]]></comments><cp_products_installed>false</cp_products_installed>
<data_source><![CDATA[not-installed]]></data_source>
<ipaddr><![CDATA[3.3.3.3]]></ipaddr>
<type><![CDATA[host]]></type>
</network_objects_object>
</hosts>

Wie ihr erkennen könnt, fehlt dem Wert host2 die eigentliche Attribute-Definition.
Ich habe nun versucht obigen XML-Code mit XML::Simple auszulesen.
Was zwar erst Mal funktioniert, dann aber in sofern scheitert, weil
ich die Werte host2 und host3 nicht mehr zur Verfügung habe.
XML::Simple macht ein Array wo dann an Stelle "0" alle Werte von host2 stehen und an Stelle "1" die Werte von host3 usw.
Ich weiß, ich könnte jetzt noch den XML-Code umschreiben, was aber vom Workflow sehr umständlich ist.
Weiß jemand eine Lösung wie ich die Werte mit XML::Simple raus kitzel oder welches Perlmodul dies leistet?

Danke.

Hawk

Trackback URL für diesen Beitrag:

http://community.perl.de/trackback/16
0
Eigene Bewertung: Keine

Hallo Hawk,

ich habe mal gegoogelt und bin ganz zufällig auf eine Frage gestossen, die deiner doch sehr ähnlich ist:
http://209.85.135.132/search?q=cache:0WdAjkW-TRYJ:forum.perl.de/bb/viewt...

Komischerweise ist sie unter der eigentlichen URL http://forum.perl.de/bb/viewtopic,p,24831.html nicht mehr zu finden, obwohl forum.perl.de an sich noch läuft und auch sonstigen content noch anzeigt.

Das war auch vom Wortlaut bis auf einen Satz gleich. Die Frage ist vom August 2008.

In der Google-URL findest du jedenfalls auch die Antwort.

gruss,
pq

perl-community.de - das forum mit wiki, scripts und grosser FAQ

danke. Ja im alten Forum ist der Threat nicht mehr zu finden und ich hatte ihn nicht gespeichert.
die Antwort hat mir meinen Sonntag gerettet.

Hallo Hawk,

du hattest den Thread nicht mehr gespeichert?
Erstaunlich, dass du mit deinem erneuten Post (unter anderem Nick) bis auf den ersten Satz genau den gleichen Wortlaut getroffen hast, und das nach fast 1 1/2 Jahren. Das ist statistisch gesehen bei der Länge des Textes fast unmöglich ;-)
(Und erstaunlich, dass du nach so langer Zeit noch am selben Problem arbeitest...)

Ausserdem frage ich mich, warum der alte Thread gelöscht ist. Eigentlich werden ja hier keine Threads gelöscht. Oder gilt das ab sofort nicht mehr für das alte Forum?

Ich finde das alles ziemlich merkwürdig im Zusammenhang. Zumal im Datenbanken-Forum ein ähnlicher Fall heute reinkam.

Zwei Threads, die vor kurzem gelöscht wurden (zumindest sind sie noch im Google-Cache), deren Autor sich jeweils ausgerechnet heute daran erinmnert, dass er vor 1 1/2 bis 2 Jahren mal ne Frage hatte und die im gleichen Wortlaut stellt wie damals.

Mein Tipp: Das nächste Mal einfach warten, bis der Google-Cache expired ist ;-)

perl-community.de - das forum mit wiki, scripts und grosser FAQ