Autor Beitrag
JohnDyr
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56
Erhaltene Danke: 1

Win 10
C# (VS 2017)
BeitragVerfasst: Fr 15.03.19 23:43 
Hallo,

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

Beispiel:

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

ausblenden Quelltext
1:
/start/ebene1/ebene2/hours					


Zuletzt bearbeitet von JohnDyr am Sa 16.03.19 00:12, insgesamt 1-mal bearbeitet
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1201
Erhaltene Danke: 158

Windows 10 x64 Home Premium
C# (VS 2015 Enterprise)
BeitragVerfasst: Sa 16.03.19 00:08 
Dein XML ist invalide

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


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

Für diesen Beitrag haben gedankt: JohnDyr
JohnDyr Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56
Erhaltene Danke: 1

Win 10
C# (VS 2017)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1201
Erhaltene Danke: 158

Windows 10 x64 Home Premium
C# (VS 2015 Enterprise)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56
Erhaltene Danke: 1

Win 10
C# (VS 2017)
BeitragVerfasst: 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.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 16.03.19 00:39 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: JohnDyr
JohnDyr Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56
Erhaltene Danke: 1

Win 10
C# (VS 2017)
BeitragVerfasst: Sa 16.03.19 01:04 
user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Quelltext
1:
//employeekey[@id="3"]/../hours					

hätte es auch getan


habe ich auch so umgesetzt :)

ausblenden C#-Quelltext
1:
XmlNodeList nodes = doc.SelectNodes("//employeekey[@id=\"" + employeeId + "\"]/../hours");					
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 16.03.19 01:11 
- Nachträglich durch die Entwickler-Ecke gelöscht -