Hvordan får jeg XPathNavigator til at bruge XPath?
Hej med jer ...Det lyder ellers som om det burde være let - men der er jo nok et eller andet jeg har misforstået :-(
Jeg har et program (i C#) som skal hente udvalgte data ud af et XML document. Jeg er interesseret i at mest muligt foregår vha. XPath, så det bliver så dynamisk som muligt (altså ikke noget med at jeg SKAL kende den eksakte position for de forskellige oplysninger)
Mit XML dokument ser noget generaliseret ud som nedenstående:
<root>
<element>
<data1>værdi 1a</data1>
<data2>værdi 2a</data2>
<data3 data="værdi3a" />
</element>
<element>
<data1>værdi 1b</data1>
<data2>værdi 2b</data2>
<data3 data="værdi3b" />
</element>
<element>
<data1>værdi 1c</data1>
<data2>værdi 2c</data2>
<data3 yada="værdi3c" />
</element>
</root>
Jeg har hentet dokumentet ind, oprettet en XPathNavigator xpath = root.CreateNavigator();
Jeg har en XPathNodeIterator som i en while (iterator.MoveNext()) løkke traver gennem alle <element>.
I maven på løkken cloner jeg current, så jeg ikke fucker løkken up.
Nu er det så at jeg rigtig gerne ville have mulighed for at bruge XPath til at maske de forskellige værdier indenfor et enkelt element ud.
Jeg kan godt køre rundt med min XPathNavigator med MoveToFirstChild(), MoveToNext(), moveToParent() og den slags ... men jeg kan bare ikke være sikker på
at data1, data2 og data3 altid kommer i samme rækkefølge, at de altid er der allesammen og den slags. Derfor ville det være noget
mere robust, hvis jeg kunne skrive noget i retning af getValueAt("./data2") eller getAttributeValue("//data3[@yada]","yada") eller noget i den stil.
Jeg har i øvrigt IKKE adgang til at skrive id'er i de forskellige felter, så løsningen kan ikke involvere MoveToId() ... well ikke på en simpel form i hvert fald :-?
Er der nogen af jer der har en løsning til hvordan jeg kan få XPath adgang gennem mit (/mine?) XPathNavigator objekter? Jeg er temmelig desperat her! :-(
/o-zone
P.S. Hvis I gerne vil se min kode, så skriv endelig!