我正在尝试返回与loopcounter值匹配的Filename节点的结果。
我尝试过concat的变种(// Filename [// 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 :(得分:0)
你应该可以这样做:
//Filenames/*[local-name()=concat('Filename',/ProcessData/loopcounter)]
此外,如果“文件名”元素没有跳过(例如从Filename1
转到Filename3
),您应该可以使用position()
代替:
//Filenames/*[position() = /ProcessData/loopcounter]