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

    J'essaie de trouver l'IMD dans le dernier élément Line de mon fichier edifact, en utilisant xpath dans biztalk - orchestration. Ceci est mon XPath:Comment trouver le dernier élément

    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()"); 
    

    Et voici mon edifat fichier:

    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' 
    

    Il retourne:

    a un jeton invalide

    Répondre

    2

    À tout fin, vous avez

    last()

    Les indexeurs de position doivent être placés entre crochets.

    donc faire simplement:

    [last()]

    +0

    où dans mon XPath voulez-vous mettre ?? – Oedum

    +0

    Exactement là où vous l'avez en ce moment. Le dernier bit deviendrait: '[local-name() = 'C27304' et namespace-uri() = ''] [last()]' – Arran

    +0

    Essayé. Cela ne fonctionne pas :( – Oedum

    1

    Je l'ai résolu. Désolé Arran, tu avais totalement raison à propos de [last()]. J'avais juste besoin de le mettre dans un autre endroit que suggéré.

    C'est la solution:

    /*[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 pour aller au fond de celui-ci! – Arran

    Questions connexes