ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
408
408
EMPFEHLEN
-
Hallo zusammen,
möchte aus folgender XML-Struktur Werte heraus lesen über XPATH. Das ganze funktioniert nur teilweise. Probleme machen die OR bzw. AND Operationen
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
<Object> <ComponentList> <Component Name="_Article"> <ClassName>MeineKlasse</ClassName> <Quantity>1.000000</Quantity> <OrderNumber>-1</OrderNumber> <ObjectNumber>2</ObjectNumber> </Component> <Component Name="_Article1"> <ClassName>TestKlasse1</ClassName> <Quantity>1.000000</Quantity> <OrderNumber>-1</OrderNumber> <ObjectNumber>3</ObjectNumber> </Component> <Component Name="_Article2"> <ClassName>Testklasse2</ClassName> <Quantity>1.000000</Quantity> <OrderNumber>6</OrderNumber> <ObjectNumber>3</ObjectNumber> </Component> <Component Name="_Article3"> <ClassName>NeueKlasse</ClassName> <Quantity>1.000000</Quantity> <OrderNumber>6</OrderNumber> <ObjectNumber>3</ObjectNumber> </Component> <Component Name="_Article4"> <ClassName>NeueKlasse</ClassName> <Quantity>1.000000</Quantity> <OrderNumber>6</OrderNumber> <ObjectNumber>3</ObjectNumber> <AssigndDeleteRule>1</AssigndDeleteRule> </Component> </ComponentList> <Object>
-->
In meinem Ergebnis möchte ich nur die Componenten, welche Ordernuber != -1 und die jeningen welche kein Kind Namens AssignDeleteRule haben.
Mein XPATH sieht momentan so aus:
(Nur eine von vielen Möglichkeiten die ich getesten habe.
Vielleicht ist das auch der komplett falsche AnsatzCode :1
//child::*[self::Classname and self::ObjectNumber and self::OrderNumber != -1 and self::AssigndeleteRule != null]/child::text()

Die Liste die ich über XPATH raus lesen möchte sollte nachher so aussehen:
Ergebnis:
ClassName TestKlasse2
Quantity 1.000000
OrderNumber 6
ObjectNumber 3
ClassName NeueKlasse
Quantity 1.000000
OrderNumber 6
ObjectNumber 3
Für eine Hilfe wäre ich euch dankbar!
Wanze003
-
28.09.07 12:24 #2
- Registriert seit
- Mar 2007
- Beiträge
- 21
Da ich nicht deine XSLT Datei kenne mein Vorschlag
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" indent="yes"/> <xsl:variable name="lf"> <xsl:text> </xsl:text> </xsl:variable> <xsl:template match="/"> <xsl:apply-templates select="Object"/> </xsl:template> <xsl:template match="Object"> <xsl:apply-templates select="ComponentList"/> </xsl:template> <xsl:template match="ComponentList"> <xsl:apply-templates select="Component[./OrderNumber!= -1 and not(AssigndDeleteRule)]"/> </xsl:template> <xsl:template match="Component"> <xsl:text>ClassName </xsl:text> <xsl:value-of select="ClassName"/> <xsl:value-of select="$lf"/> <xsl:text>Quantity </xsl:text> <xsl:value-of select="Quantity"/> <xsl:value-of select="$lf"/> <xsl:text>OrderNumber </xsl:text> <xsl:value-of select="OrderNumber"/> <xsl:value-of select="$lf"/> <xsl:text>ObjectNumber </xsl:text> <xsl:value-of select="ObjectNumber"/> <xsl:value-of select="$lf"/> </xsl:template> </xsl:stylesheet>
-
Danke mal für Deine schnelle Hilfe!
jedoch nutze ich XSL gar nicht. Ich übergebe den XPATH einer Funktion die dann die ausgewählten Nodes zurück gibt, welche ich im XPATH definiere. Von daher ist mir die XPATH-Syntax an der Stelle wichtig. Ich habe jetzt gerade getestet das aus Deiner XSL als XPATH zu verwenden, will aber irgendwie nicht en.
Hab jetzt folgendes als XPATH zusammen gebaut:
Code :1
/Object/ComponentList/Component[./OrderNumber!= -1 and not(AssigndDeleteRule)]/child::text()
kriege so leider gar nichts zurück.
Irgendwo ist hier der Wurm drin
Gruß
Wanze003
-
28.09.07 13:57 #4
- Registriert seit
- Mar 2007
- Beiträge
- 21
mit welches Programm wird benutzt
dann kann ich es verstehen.
Probelm kann sein das es keine Node set ist
-
28.09.07 16:16 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.Du darfst dort nicht child::text() anhängen. Du bekommst durch den Ausdruck
schon das richtige Ergebnis, du mußt jetzt nur durch das Node-Set durchgehen und die gewünschten Informationen ausgeben.Code :1
/Object/ComponentList/Component[./OrderNumber!= -1 and not(AssigndDeleteRule)]
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Frage zu xpath in php5
Von Inspector im Forum PHPAntworten: 4Letzter Beitrag: 27.01.08, 10:10 -
Frage zu XSLT,XPath,XQuery
Von WeirdAl im Forum XML TechnologienAntworten: 1Letzter Beitrag: 26.01.08, 18:14 -
Newbie: Frage zu XPath
Von Mysteryh81 im Forum XML TechnologienAntworten: 1Letzter Beitrag: 17.07.07, 08:26 -
Java XPath Problem (1.5 javax.xml.xpath.*)
Von mad_dark_angel im Forum JavaAntworten: 5Letzter Beitrag: 10.05.06, 14:39 -
Java, XPath und die Frage nach der Elementnummer
Von marbles im Forum JavaAntworten: 1Letzter Beitrag: 22.06.05, 16:27





Zitieren

Login





