Benutzer mit den meisten Antworten
How to select a specific XML value via XPath - Einen Wert aus XML auslesen mit XPath ?

Frage
-
Hello,
i have a xml file with the following structure:
ich habe eine XML Datei mit folgender Struktur:<vlstatus> <status>OK</status> <fp pilot="xxxx"> <leg> <index>0</index> <ICAO>EHAM</ICAO> <ETA>1297283940</ETA> <status>ontime</status> <passengers>400</passengers> <waitfor></waitfor> </leg> <leg> <index>1</index> <ICAO>EDDH</ICAO> <ETA>1297286940</ETA> <status>filed</status> <passengers>406</passengers> <waitfor></waitfor> </leg> </fp> <vlstatus>
Now i want to get a specific value like /leg/icao where index=1 (in the example it will be EDDH)
Jetzt möchte ich einen speziellen Wert wie /leg/icao wo der Index 1 ist (im Beispiel EDDH)With the following code i can get the value where index = 0
Mit dem folgenden code bekomme ich ja den wert wo index 0 istICAO = xml_Doc.SelectSingleNode("/vlstatus/fp[@pilot="xxxx"]/leg/ICAO").InnerText
What is the easyest way to get the EDDH value ?
Was ist der einfachste Weg, den EDDH Wert zu bekommen ?Regards,
ReneFFM
Antworten
-
Hallo ReneFFM,
Wir haben also folgende .xml Datei mit dem Namen input.xml:
<vlstatus> <status>OK</status> <fp pilot="xxxx"> <leg> <index>0</index> <ICAO>EHAM</ICAO> <ETA>1297283940</ETA> <status>ontime</status> <passengers>400</passengers> <waitfor></waitfor> </leg> <leg> <index>1</index> <ICAO>EDDH</ICAO> <ETA>1297286940</ETA> <status>filed</status> <passengers>406</passengers> <waitfor></waitfor> </leg> </fp> </vlstatus>
Folgender Code basiert sich auf LinqToXML und bringt Dir den Wert von ICAO wenn index 1 ist:
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim FullPath As String = Application.StartupPath + "\input.xml" Dim _charSheet As XDocument = XDocument.Load(FullPath) Dim _charInfoEl As IEnumerable(Of XElement) = _charSheet.Root.Descendants("leg") '//For Each item In _charInfoEl '// Console.WriteLine(item.Element("index").Value) '// Console.WriteLine(item.Element("ICAO").Value) '//Next Dim ICAO = From cust In _charInfoEl _ Where cust.Element("index").Value = "1" _ Select cust.Element("ICAO").Value Console.WriteLine(ICAO(0)) End Sub End Class
Grüße,
Robert
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 18. Februar 2011 08:31
Alle Antworten
-
Hallo ReneFFM,
Wir haben also folgende .xml Datei mit dem Namen input.xml:
<vlstatus> <status>OK</status> <fp pilot="xxxx"> <leg> <index>0</index> <ICAO>EHAM</ICAO> <ETA>1297283940</ETA> <status>ontime</status> <passengers>400</passengers> <waitfor></waitfor> </leg> <leg> <index>1</index> <ICAO>EDDH</ICAO> <ETA>1297286940</ETA> <status>filed</status> <passengers>406</passengers> <waitfor></waitfor> </leg> </fp> </vlstatus>
Folgender Code basiert sich auf LinqToXML und bringt Dir den Wert von ICAO wenn index 1 ist:
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim FullPath As String = Application.StartupPath + "\input.xml" Dim _charSheet As XDocument = XDocument.Load(FullPath) Dim _charInfoEl As IEnumerable(Of XElement) = _charSheet.Root.Descendants("leg") '//For Each item In _charInfoEl '// Console.WriteLine(item.Element("index").Value) '// Console.WriteLine(item.Element("ICAO").Value) '//Next Dim ICAO = From cust In _charInfoEl _ Where cust.Element("index").Value = "1" _ Select cust.Element("ICAO").Value Console.WriteLine(ICAO(0)) End Sub End Class
Grüße,
Robert
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 18. Februar 2011 08:31