Frage zu X-Path ausdruck

25/01/2010 - 19:53 von Tom | Report spam
Hallo,
ich habe folgendes XML:
<Variable BlockNumber="2" Name="B" Description="D" Locate_ProcA="True"
NonVolatile_ProcA="False" ReadAccessRef="b">
<Struct>
<Struct Name="ab" Description="x">
<BasicType Name="Content">
<XByte>
<UIntX Name="A" Width="3" Description="a" DefaultValue="0"/>
<UIntX Name="B" Width="1" Description="b" DefaultValue="0"/>
</XByte>
</BasicType>
</Struct>
</Struct>
</Variable>
<Variable BlockNumber="3" Name="B" Description="D" Locate_ProcA="True"
NonVolatile_ProcA="False" ReadAccessRef="b">
<Struct>
<Struct Name="b" Description="x">
<BasicType Name="Content">
<XByte>
<UIntX Name="A" Width="3" Description="a" DefaultValue="0"/>
<UIntX Name="B" Width="1" Description="b" DefaultValue="0"/>
</XByte>
</BasicType>
</Struct>
</Struct>
</Variable>
</Group Name>
</Block Name>
</IFD>
</CID>

Aus diesem XML file will ich per X-Path Ausdruck alle UInt X Elemente
unterhalb des Variable Elements mit BlockNumber = 2 und Struct Elements mit
Name = ab auswàhlen. Zwischenelemente wie XByte oder Basic Type sollen
ignoriert und nicht ausgewàhlt werden. Auch ist die ebene auf dem das UIntX
element steht unbekannt und variabel.
Habe es mit folgendem Ausdruck probiert, der aber nicht klappt.
"//Variable[@BlockNumber = 2]//Struct[@Name = "ab"]//UIntX"
Kann mir bitte jemand weiterhelfen.. Danke..
 

Lesen sie die antworten

#1 Martin Honnen
26/01/2010 - 14:06 | Warnen spam
Tom wrote:

ich habe folgendes XML:
<Variable BlockNumber="2" Name="B" Description="D" Locate_ProcA="True"
NonVolatile_ProcA="False" ReadAccessRef="b">
<Struct>
<Struct Name="ab" Description="x">
<BasicType Name="Content">
<XByte>
<UIntX Name="A" Width="3" Description="a" DefaultValue="0"/>
<UIntX Name="B" Width="1" Description="b" DefaultValue="0"/>
</XByte>
</BasicType>
</Struct>
</Struct>
</Variable>
<Variable BlockNumber="3" Name="B" Description="D" Locate_ProcA="True"
NonVolatile_ProcA="False" ReadAccessRef="b">
<Struct>
<Struct Name="b" Description="x">
<BasicType Name="Content">
<XByte>
<UIntX Name="A" Width="3" Description="a" DefaultValue="0"/>
<UIntX Name="B" Width="1" Description="b" DefaultValue="0"/>
</XByte>
</BasicType>
</Struct>
</Struct>
</Variable>
</Group Name>
</Block Name>
</IFD>
</CID>

Aus diesem XML file will ich per X-Path Ausdruck alle UInt X Elemente
unterhalb des Variable Elements mit BlockNumber = 2 und Struct Elements mit
Name = ab auswàhlen. Zwischenelemente wie XByte oder Basic Type sollen
ignoriert und nicht ausgewàhlt werden. Auch ist die ebene auf dem das UIntX
element steht unbekannt und variabel.
Habe es mit folgendem Ausdruck probiert, der aber nicht klappt.
"//Variable[@BlockNumber = 2]//Struct[@Name = "ab"]//UIntX"



Dein Beispiel ist kein wohlgeformtes XML-Dokument.
Angenommen, du hast

<Root>
<Variable BlockNumber="2" Name="B" Description="D" Locate_ProcA="True"
NonVolatile_ProcA="False" ReadAccessRef="b">
<Struct>
<Struct Name="ab" Description="x">
<BasicType Name="Content">
<XByte>
<UIntX Name="A" Width="3" Description="a" DefaultValue="0"/>
<UIntX Name="B" Width="1" Description="b" DefaultValue="0"/>
</XByte>
</BasicType>
</Struct>
</Struct>
</Variable>
<Variable BlockNumber="3" Name="B" Description="D" Locate_ProcA="True"
NonVolatile_ProcA="False" ReadAccessRef="b">
<Struct>
<Struct Name="b" Description="x">
<BasicType Name="Content">
<XByte>
<UIntX Name="A" Width="3" Description="a" DefaultValue="0"/>
<UIntX Name="B" Width="1" Description="b" DefaultValue="0"/>
</XByte>
</BasicType>
</Struct>
</Struct>
</Variable>
</Root>

dann selektiert dein XPath-Ausdruck

//Variable[@BlockNumber = 2]//Struct[@Name = "ab"]//UIntX

sehr wohl zwei Elemente:

<UIntX DefaultValue="0" Description="a" Name="A" Width="3"/>
<UIntX DefaultValue="0" Description="b" Name="B" Width="1"/>

Wenn du immer noch Probleme hast, dann musst du genauer erklàren, wie du
XPath verwendest, so dass wir das Problem reproduzieren können.


Martin Honnen MVP XML
http://msmvps.com/blogs/martin_honnen/

Ähnliche fragen