2017-06-02 5 views
2

Ich versuche, das Ergebnis des Dateiname-Knotens zurückzugeben, der mit dem loopcounter-Wert übereinstimmt.XPATH-Abfrage mit Wert aus xml

Ich habe Variationen von Concat versucht (// Dateiname [// loopcounter/text()],/text())

<?xml version="1.0" encoding="UTF-8"?> 
<ProcessData> 
    <PrimaryDocument SCIObjectID="IDCEDI98:node1:15c5a08563f:2012534"/> 
    <Mail_Client> 
    <Headers> 
     <Attachment_Count>1</Attachment_Count> 
    </Headers> 
    <Attachments> 
     <ContentTypes> 
     <Content_Type1>text/plain; 
    name="TOYEDI_20170530000003.TXT_14665218_2017May29.TXT"</Content_Type1> 
     </ContentTypes> 
     <Filenames> 
     <Filename1>TOYEDI_20170530000003.TXT_14665218_2017May29.TXT</Filename1> 
     </Filenames> 
     <FileExtensions> 
     <FileExtension1>TXT</FileExtension1> 
     </FileExtensions> 
    </Attachments> 
    </Mail_Client> 
    <b2b-raw-message>true</b2b-raw-message> 
    <b2b-protocol>smtp</b2b-protocol> 
    <loopcounter>1</loopcounter> 
    <TINA> 
    <MAILBOX> 
     <WORKFLOW_ID>5344652</WORKFLOW_ID> 
     <TIME_STAMP>2017Jun02</TIME_STAMP> 
    </MAILBOX> 
    </TINA> 
    <DestinationMessageName/> 
</ProcessData> 
+0

Zwei Wörter und einige Interpunktion: 'local-name()'. –

Antwort

0

Sie sollten so etwas tun können:

//Filenames/*[local-name()=concat('Filename',/ProcessData/loopcounter)] 

auch wenn die „Dateiname“ Elemente nicht überspringen (wie Filename1-Filename3 gehen), sollten Sie in der Lage sein position() stattdessen zu verwenden:

//Filenames/*[position() = /ProcessData/loopcounter] 
+1

Das hat funktioniert, danke! –