Entwickler-Ecke

Alle Sprachen - Alle Plattformen - XPath Zugriff


JohnDyr - Fr 15.03.19 23:43
Titel: XPath Zugriff
Hallo,

ich muss gerade mit XPath arbeiten um auf bestimmte Elemente zuzugreifen. Leider komme ich nicht auf den XPath Ausdruck.

Beispiel:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<start>
    <ebene1>
        <ebene2>
            <employeekey id="2" name="Max, Mustermann">2398481239</employeekey>
            <hours>5</hours>
        </ebene2>
        <ebene2>
            <employeekey id="2" name="Max, Mustermann">2398481239</employeekey>
            <hours>6</hours>
        </ebene2>
        <ebene2>
            <employeekey id="3" name="Max, Mustermann">2398481239</employeekey>
            <hours>10</hours>
        </ebene2>
    <ebene1>
<start>


Ich möchte alle hour Elemente (Liste aus Strings) über ein XPath Ausdruck wiederbekommen, wo die employeeKey ID = X ist. Wisst Ihr wie der XPath dafür gelten muss? Folgender XPath gibt mir alle hours zurück, unabhängig von der employee id:


Quelltext
1:
/start/ebene1/ebene2/hours                    


Palladin007 - Sa 16.03.19 00:08

Dein XML ist invalide


Quelltext
1:
/start/ebene1/ebene2[employeekey[@id=3]]/hours                    


Und das hilft sehr: https://www.freeformatter.com/xpath-tester.html


JohnDyr - Sa 16.03.19 00:13

Stimmt, habe es angepasst. Danke dir :)

Es kann sein, dass ich nochmal die ein oder andere XPath Frage stellen werde, falls ich mit dem Tool nicht weiterkomme.


Palladin007 - Sa 16.03.19 00:16

Dein XML ist immer noch invalide :P
Aber ich geh Mal davon aus, dass das nur ein Test für das Forum war.


Und lies dir die Anleitungen zu XPath durch, wie z.B. den Wikipedia-Artikel dazu.
XPath ist extrem flexibel, aber auch sehr eingängig, die meisten Dinge kann man mit einer sehr steilen Lernkurve lernen.
Ich hab mir XPath auch vor kurzem für ein Projekt engeeignet und ich hatte in etwa einen Abend Zeit :D


JohnDyr - Sa 16.03.19 00:36

Richtig, habe das XML per Hand geschrieben weil die echten Daten diskret sind.

Jedenfalls habe ich folgendes Tool gefunden, was echt genial ist:

XMLQuireWin8

Ist komplett Freeware. Kannst es dir ja anschauen, falls du noch an deinem XPath Projekt sitzt.


Delete - Sa 16.03.19 00:39

- Nachträglich durch die Entwickler-Ecke gelöscht -


JohnDyr - Sa 16.03.19 01:04

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:

Quelltext
1:
//employeekey[@id="3"]/../hours                    

hätte es auch getan


habe ich auch so umgesetzt :)


C#-Quelltext
1:
XmlNodeList nodes = doc.SelectNodes("//employeekey[@id=\"" + employeeId + "\"]/../hours");                    


Delete - Sa 16.03.19 01:11

- Nachträglich durch die Entwickler-Ecke gelöscht -