Ankündigung

Einklappen
Keine Ankündigung bisher.

C#, Xpath

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • C#, Xpath

    Hallo CodePlanet-Community, ich habe folgendes Problem. Ich möchte aus einem xml dokument einen bestimmten Knoten auswählen. Dabei stoße ich auf ein für mich seltsames problem.

    Der Pfad:
    /AAA/BBB/CCC[normalize-space(@attr)='ddd']/DDD[3]/EEE

    Ab EEE wird es nämlich komisch. Wenn ich mir die anzahl der Kinder von DDD ausgeben lasse, kommt der richtige Rückgabewert. (1) Wenn ich mir die namen dieser Childnodes ausgeben lasse ist es ebenfalls korrekt. Verwende ich den namen aber im XPath, dann bekomme ich einen leeren Knoten zurück.
    Verwende ich aber /* statt /EEE funktioniert es. Jetzt hat EEE aber noch mehrere Kinder und an die komme ich auch nur über /* ran und nicht über den namen. Ich möchte aber ein bestimmten knoten und nicht alle durchgehen.

    Kann mir jemand einen Tipp geben wo sich der Fehler eingeschlichen hat?

    Code:
    <AAA>
    	<BBB>
    		<CCC />
    		<CCC attr="ddd">
    			<DDD />
    			<DDD />
    			<DDD>
    				<EEE>
    					<FFF />
    					<GGG/>
    					<HHH/>
    				</EEE>
    			</DDD>
    		</CCC>
    	</BBB>
    </AAA>

  • #2
    Hallo Bebop,

    sowohl

    PHP-Code:
    /AAA/BBB/CCC[normalize-space(@attr)='ddd']/DDD[3]/* 
    als auch

    PHP-Code:
    /AAA/BBB/CCC[normalize-space(@attr)='ddd']/DDD[3]/EEE 
    sollten dir ein Array der 3 Subchilds zurückliefern. Nämlich:

    PHP-Code:
    Array ( [0] => SimpleXMLElement Object ( [FFF] => SimpleXMLElement Object ( ) [GGG] => SimpleXMLElement Object ( ) [HHH] => SimpleXMLElement Object ( ) ) ) 
    Welche Implementierung von XPath verwendest du? Java Saxon, PHP DOMXPath oder vielleicht C++ mit libxml2?

    Mir ist nicht ganz klar was du genau erreichen möchtest. Möchtest du die Anzahl der Subchilds haben? Könntest du deine Frage konkretisieren?

    Grüße
    GAGA

    Kommentar

    Lädt...
    X