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: 1194
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: 1194
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2292
Erhaltene Danke: 420

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Sa 16.03.19 00:39 
ausblenden Quelltext
1:
//employeekey[@id="3"]/../hours					

hätte es auch getan

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2292
Erhaltene Danke: 420

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Sa 16.03.19 01:11 
:zustimm: Hier eine Aufzählung von möglichen Befehlen.
Ob beim Vergleich ein Hochkomma, Anführungszeichen oder nichts davon stehen soll, weiss ich jedoch nicht.
Bei dem Beispiel scheint es keinen Unterschied zu machen.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)