XPath在多个节点上运行

XPath在多个节点上运行,xpath,concatenation,Xpath,Concatenation,我对xpath不是很熟悉。但我正在使用xpath表达式并在数据库中设置它们。实际上,它只是biztalk的BAM工具 无论如何,我有一个xml,它可能看起来像: <File> <Element1>element1<Element1> <Element2>element2<Element2> <Element3> <SubElement>sub1</SubElement> &

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

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

<File>
  <Element1>element1<Element1>
  <Element2>element2<Element2>
  <Element3>
    <SubElement>sub1</SubElement>
    <SubElement>sub2</SubElement>
    <SubElement>sub3</SubElement>
  <Element3>
</File>
如果它只有一个索引,那么它就可以工作。但很明显,我的xml有时有更多的节点,所以它给出NULL。我可以用

/*[local-name()='File']/*[local-name()='Element3']/*[local-name()='SubElement'][0]
但我需要所有的节点。有办法做到这一点吗

非常感谢

编辑:我更改了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>

el1
el2
el3
subel1a
subel2a
subel1b
subel2b
我需要一行代码来得到这样的结果:“subel2a subel2b”


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

/File/Element3/SubElement
将匹配示例XML中的所有
子元素。你用什么来评估它


如果您的评估方法受“第一个节点规则”的约束,则它将仅与第一个节点规则匹配。如果您使用的是返回节点集的方法,那么它将返回所有节点集。

字符串联接(/file/Element3/SubElement,,)
您可以使用以下方法获取所有子元素:

//SubElement
但这并不能让它们按照你的意愿组合在一起。您需要查询包含子元素的所有元素(基本上是搜索任何子元素的父元素)

一旦有了它,您就可以(取决于您的编程语言)循环父元素并连接子元素。

这不是第二次
吗?不幸的是,XPath 1.0中没有string-join()-(
//parent::SubElement
//parent::SubElement