Autor Beitrag
D.Follmann
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: Mo 01.10.07 08:47 
Hallo,
ich habe folgendes XML-Dokument:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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#:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31



BeitragVerfasst: 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

es dreht sich um folgende XML-Datei:

ausblenden 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"/>               
    <!--hier stehen noch ein paar knoten, hab ich der Übersichtlichkeit wegen entfernt...>
  </DtmInfo>
</FDT>


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:
ausblenden C#-Quelltext
1:
XmlNodeList nodes = xdoc.SelectNodes("/*/DtmInfo"); //xdoc ist das XmlDocument.					



Warum ist die NodeList da denn leer?! ich versteh' das alles nicht...

Danke im vorraus!