Entwickler-Ecke
IO, XML und Registry - XML-Attribut auswählen und verarbeiten (XPath ?)
D.Follmann - Mo 01.10.07 08:47
Titel: XML-Attribut auswählen und verarbeiten (XPath ?)
Hallo,
ich habe folgendes XML-Dokument:
XML-Daten
1: 2: 3: 4:
| <?xml version="1.0" ?> <FDT xmlns="x-schema:DTMCommunicationErrorSchema.xml" xmlns:fdt="x-schema:FDTDataTypesSchema.xml"> <fdt:CommunicationError communicationError="timeout" tag="myTag"/> </FDT> |
und daraus möchte ich jetzt den Text lesen, der hinter communicationError steht (also hier: "timeout"). Wie mache ich das am besten? Über XPath? Wenn ja, wie müsste die Abfrage aussehen?
Ich denke dass XPath schon sinnvoll wäre, da es auch wesentlich komplexere XML-Dateien gibt und man da anders wahrscheinlich kaum noch durch Navigieren kann.
UGrohne - Mo 01.10.07 10:18
Google mal nach einem XPath-Tutorial, ich glaube auf w3cschools gab es ein Gutes. Ansonsten müsste das in etwa so aussehen in C#:
C#-Quelltext
1: 2: 3: 4: 5:
| XmlNamespaceManager nsmgr; XmlDocument myDoc; nsmgr = new XmlNamespaceManager(myDoc.NameTable); nsmgr.AddNamespace("fdt",[Namespace-URI]); XmlNode node = myDoc.SelectSingleNode("//fdt:communicationError[@communicationError]", nsmgr); |
Ich bin mir gerade nicht sicher, ob mein XPath stimmt, weil ich Attribute damit bisher nicht direkt ausgelesen habe, aber so in etwa sollte es gehen. Einfach in dem Tutorial schauen ;)
D.Follmann - Mo 01.10.07 12:56
Danke für die Antwort, aber das funktioniert irgednwie alles nicht so wie ich will...
mal was anderes,vielleicht bringt mich das eher weiter:
Ich bin grade dabei mit Xpath zu experimentieren. Dazu habe ich folgende Seite als Hilfe genommen:
XPath-Test [
http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm?Red60urne=fe1aaa944c37dfeccc5c0cacfd3bbc54&context=%2F&xpath=%2FFDT%2Ffdt%3ACommunicationError%2F%40communicationError&eval=Evaluate]
es dreht sich um folgende XML-Datei:
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <?xml version="1.0"?> <FDT xmlns="x-schema:DTMInformationSchema.xml" xmlns:fdt="x-schema:FDTDataTypesSchema.xml" > <DtmInfo> <FDTVersion major="1" minor="2" release="1" build="1"/> |
Gebe ich nun im XPath-Tester Beispielsweise ein: /*/DtmInfo
Selektiert er mir natürlich den "DtmInfo"-Knoten.
Aber in C# bekomme ich bei gleicher XPath-Abfrage eine Leeere XmlNodeList zurück:
C#-Quelltext
1:
| XmlNodeList nodes = xdoc.SelectNodes("/*/DtmInfo"); |
Warum ist die NodeList da denn leer?! ich versteh' das alles nicht...
Danke im vorraus!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!