XPath连接多个节点

WtF*_*dgE 4 xpath concatenation

我对xpath不太熟悉.但我正在使用xpath表达式并将它们设置在数据库中.实际上它只是biztalk的BAM工具.

无论如何,我有一个xml,看起来像:

<File>
  <Element1>element1<Element1>
  <Element2>element2<Element2>
  <Element3>
    <SubElement>sub1</SubElement>
    <SubElement>sub2</SubElement>
    <SubElement>sub3</SubElement>
  <Element3>
</File>
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法使用xpath表达式来获取所有SubElements?目前,我正在使用:

 /*[local-name()='File']/*[local-name()='Element3']/*[local-name()='SubElement']
Run Code Online (Sandbox Code Playgroud)

如果它只有一个索引,则有效.但显然我的xml有时会有更多的节点,所以它给出了NULL.我可以用

/*[local-name()='File']/*[local-name()='Element3']/*[local-name()='SubElement'][0]
Run Code Online (Sandbox Code Playgroud)

但我需要所有的节点.有没有办法做到这一点?

非常感谢!

编辑:我更改了XML,我错了,它不同,它应该是这样的:

<item>
    <element1>el1</element1>
    <element2>el2</element2>
    <element3>el3</element3>
    <element4>
        <subEl1>subel1a</subEl1>
        <subEl2>subel2a</subEl2>
    </element4>
    <element4>
        <subEl1>subel1b</subEl1>
        <subEl2>subel2b</subEl2>
    </element4>
</item>
Run Code Online (Sandbox Code Playgroud)

我需要一行代码才能得到如下结果:"subel2a subel2b";

我需要一行,因为我将此xpath表达式设置为xml属性(不是我的选择,它是指定的).我尝试了字符串连接,但它并没有真正起作用.

Rob*_*tie 5

string-join(/file/Element3/SubElement, ',')

  • 不幸的是,string-join()不在XPath 1.0中.:-( (7认同)