2017-05-18 7 views
0

Ich habe ein XML-Dokument, das so aussieht:Wrong XPathExpression

<ns0:SIM_StdNeunNulldelticket xmlns:ns0="http://DoX.BAI.BT.Schemas/001"> 
    <ns0:SIM_StdNeunNulldelticket PacketIds="b1cd4e60-0526-4d88-85a3-baabadc4b30f" RecIds="ae319e04-b5ce-4d67-8506-bfb09d9643f1" RecVersion="94c990aa-e98e-4f5c-8e21-9111ad4de227" SendingUserName="LAB" ExportId="23881aa6-3ba6-11e7-8d4d-901b0e8bf24b"> 
    <ns0:Cmsnet version="9.0"> 
     <ns0:delticket prim_client="1" prim_firmno="1" prim_plantno="3" prim_proddate="2017-05-18T00:00:00" prim_dtno="361487"> 
     <ns0:client>1</ns0:client> 
     <ns0:firmno>1</ns0:firmno> 
     <ns0:plantno>3</ns0:plantno> 
     <ns0:proddate>2017-05-18T00:00:00</ns0:proddate> 
     <ns0:dtno>361487</ns0:dtno> 
     <ns0:mutation>mtProdStart</ns0:mutation> 
     <ns0:batchid>4308</ns0:batchid> 
     </ns0:delticket> 
    </ns0:Cmsnet> 
    </ns0:SIM_StdNeunNulldelticket> 
    <ns0:SIM_StdNeunNulldelticket PacketIds="b1cd4e60-0526-4d88-85a3-baabadc4b30f" RecIds="1f12eabb-d2c2-4f15-948a-abed3eca5f3a" RecVersion="dfb8882a-606f-44e2-8c76-5d68274a8ce9" SendingUserName="LAB" ExportId="23881aa7-3ba6-11e7-8d4d-901b0e8bf24b"> 
    <ns0:Cmsnet version="9.0"> 
     <ns0:delticket prim_client="1" prim_firmno="1" prim_plantno="6" prim_proddate="2017-05-18T00:00:00" prim_dtno="693311"> 
     <ns0:client>1</ns0:client> 
     <ns0:firmno>1</ns0:firmno> 
     <ns0:plantno>6</ns0:plantno> 
     <ns0:proddate>2017-05-18T00:00:00</ns0:proddate> 
     <ns0:dtno>693311</ns0:dtno> 
     <ns0:mutation>mtProdEnd</ns0:mutation> 
     <ns0:batchid>4306</ns0:batchid> 
     </ns0:delticket> 
    </ns0:Cmsnet> 
    </ns0:SIM_StdNeunNulldelticket> 
</ns0:SIM_StdNeunNulldelticket> 

Mein XPathExpression ist

/*[//*[local-name() = 'delticket'] and //*[@prim_plantno='3']] 

so was ich will, ist nur die ... wo plantno = 3

<ns0:SIM_StdNeunNulldelticket xmlns:ns0="http://DoX.BAI.BT.Schemas/001"> 
    <ns0:SIM_StdNeunNulldelticket PacketIds="b1cd4e60-0526-4d88-85a3-baabadc4b30f" RecIds="ae319e04-b5ce-4d67-8506-bfb09d9643f1" RecVersion="94c990aa-e98e-4f5c-8e21-9111ad4de227" SendingUserName="LAB" ExportId="23881aa6-3ba6-11e7-8d4d-901b0e8bf24b"> 
     <ns0:Cmsnet version="9.0"> 
      <ns0:delticket prim_client="1" prim_firmno="1" prim_plantno="3" prim_proddate="2017-05-18T00:00:00" prim_dtno="361487"> 
       <ns0:client>1</ns0:client> 
       <ns0:firmno>1</ns0:firmno> 
       <ns0:plantno>3</ns0:plantno> 
       <ns0:proddate>2017-05-18T00:00:00</ns0:proddate> 
       <ns0:dtno>361487</ns0:dtno> 
       <ns0:mutation>mtProdStart</ns0:mutation> 
       <ns0:batchid>4308</ns0:batchid> 
      </ns0:delticket> 
     </ns0:Cmsnet> 
    </ns0:SIM_StdNeunNulldelticket> 
</ns0:SIM_StdNeunNulldelticket> 

aber ich bekomme immer beide (Plantno 6 und 3). Mein Problem ist, dass ich keine Ahnung habe wie ich meine XPathExpression schreiben soll.

Ich bin dankbar für jede Antwort! Versuchen

Antwort

0

//*[local-name() = 'delticket' and @prim_plantno='3'] 

zu bekommen nur delticket Knoten mit dem Attribut prim_plantno='3'

oder

//*[./*/*[local-name() = 'delticket' and @prim_plantno='3']] 

enthalten Vorfahren mit dem Ausgang

+0

ok, ich habe gerade erkannte ich Was'n bin ganz klar in meiner Frage: Ich brauche das ... . wo plantno = 3. Wenn ich deinen Vorschlag verwende, bekomme ich aber ich brauche auch die KatharinaG

+0

versuche '// * [./*/* [local-name() = 'delticket' und @ prim_plantno = '3']] ' – Andersson

+0

Der Filter funktioniert genau so, wie ich es wollte, danke! – KatharinaG