xpath
  • biztalk
  • edi
  • edifact
  • 2013-04-18 96 views 1 likes 
    1

    我正在嘗試在biztalk - orchestration中使用xpath在我的edifact文件的最後一行元素中查找IMD。 這是我的XPath:如何查找最後一個元素

    LastLineName = xpath(Message_2,"/*[local-name()='EFACT_D96A_INVOIC' and namespace-uri()='http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006']/*[local-name()='LINLoop1' and namespace-uri()='http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006']/*[local-name()='IMD_2' and namespace-uri()='http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006']/*[local-name()='C273_2' and namespace-uri()='http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006']/*[local-name()='C27304' and namespace-uri()='']last()"); 
    

    這是我edifat文件:

    UNB+UNOB:1+BTS-SENDER:ZZZ+RECEIVE-PARTNER:ZZZ+130418:1513+19++++0++0' 
    UNH+19+INVOIC:D:01B:UN:EAN010' 
    BGM+380+353795+9' 
    DTM+171:2013-04-18' 
    LIN+1++8886419315339:VN' 
    IMD+++:::Razer Sphex - Full retai' 
    QTY+47:10' 
    PRI+AAA:89' 
    LIN+3++8886419330028:VN' 
    IMD+++:::Razer Deathadder RESPAWN' 
    QTY+47:10' 
    PRI+AAA:347' 
    LIN+4++8886419330127:VN' 
    IMD+++:::Razer Abyssus Gaming Mou' 
    QTY+47:1' 
    PRI+AAA:242,6' 
    LIN+5++8886419330660:VN' 
    IMD+++:::Razer Imperator 2012 Exp' 
    QTY+47:2' 
    PRI+AAA:447,5' 
    LIN+6++8886419311454:VN' 
    IMD+++:::Razer Lycosa gaming keyb' 
    QTY+47:2' 
    PRI+AAA:511,5' 
    LIN+7++8886419311614:VN' 
    IMD+++:::Razer Arctosa Silver Key' 
    QTY+47:2' 
    PRI+AAA:312' 
    LIN+10++8886419340317:VN' 
    IMD+++:::Anansi (MMO Keyboard)' 
    QTY+47:1' 
    PRI+AAA:639' 
    LIN+11++8886419330509:VN' 
    IMD+++:::Razer Naga - Molten Edit' 
    QTY+47:2' 
    PRI+AAA:479,5' 
    LIN+12++8886419330981:VN' 
    IMD+++:::Razer Naga Hex MOBA/ Act' 
    QTY+47:1' 
    PRI+AAA:479,5' 
    LIN+13++8886419312277:VN' 
    IMD+++:::Razer Carcharias Gaming' 
    QTY+47:2' 
    PRI+AAA:479,5' 
    LIN+14++8886419312628:VN' 
    IMD+++:::Razer Electra headset' 
    QTY+47:4' 
    PRI+AAA:383,5' 
    UNS+S' 
    MOA+139:790' 
    UNT+50+19' 
    UNZ+1+19' 
    

    它返回:

    具有無效令牌

    回答

    2

    在很最後,你有

    last()

    位置索引器必須用方括號括起來。

    所以,簡單地使其:

    [last()]

    +0

    在我的XPath你會把它? – Oedum

    +0

    確切地說,你現在擁有它。最後一位會變成:'[local-name()='C27304'和namespace-uri()=''] [last()]' – Arran

    +0

    試過了。它不起作用:( – Oedum

    1

    我解決它。對不起,阿蘭,你對[last()]完全正確。我只是需要把它放在另一個地方而不是建議的地方。

    這是解決方案:

    /*[local-name()='EFACT_D96A_INVOIC' and namespace-uri()='http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006']/*[local-name()='LINLoop1' and namespace-uri()='http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006'][last()]/*[local-name()='IMD_2' and namespace-uri()='http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006']/*[local-name()='C273_2' and namespace-uri()='http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006']/*[local-name()='C27304' and namespace-uri()='']/text() 
    
    +0

    +1雖然它的底部! – Arran

    相關問題