xml - XPATH查询使用xml中的值

标签 xml xpath

我试图返回与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>

最佳答案

您应该能够执行以下操作:

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


另外,如果“ Filename”元素没有跳过(例如从Filename1Filename3),则应该可以使用position()

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

关于xml - XPATH查询使用xml中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44331540/

相关文章:

java - 以编程方式卸载应用程序 : crash rotating the device

selenium - selenium 是否可以使用 xpath 通过其 "for"属性找到标签元素?

xpath - 如何使用xpath获取带有属性的父元素

java - 使用java将XML文件中的数据加载到表中

Java:使用 XMLUnit 比较 XML

C++/Qt QDomDocument : iterate over all XML Tags

xml - XPath 查询搜索具有特定文本的元素

xpath 子 foo 出现在子 bar 之前的所有节点

java - 使用 Selenium 在测试自动化期间检查元素时,某些网页中的元素 "id"会发生变化(非静态)。遇到这种情况该如何处理呢?

c++ - 有没有办法用库 pugixml 读取包含另一个 xml 的 xml?