XPath连续多个节点
我对xpath不是很熟悉。但我正在使用xpath表达式并将它们设置在数据库中。其实它只是biztalk的BAM工具。XPath连续多个节点
无论如何,我有一个XML可能看起来像:
<File>
<Element1>element1<Element1>
<Element2>element2<Element2>
<Element3>
<SubElement>sub1</SubElement>
<SubElement>sub2</SubElement>
<SubElement>sub3</SubElement>
<Element3>
</File>
我在想,如果有使用让所有的子元素concatted的XPath表达式的方法吗?目前,我正在使用:
/*[local-name()='File']/*[local-name()='Element3']/*[local-name()='SubElement']
如果它只有一个索引,则可以使用。但显然,我的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>
,我需要有一个行代码来获得类似的结果:“subel2a subel2b” ;
我需要一行,因为我将此xpath表达式设置为xml属性(不是我的选择,它是指定的)。我尝试了字符串连接,但它并不真正起作用。
string-join(/file/Element3/SubElement, ',')
不幸的是,string-join()不在XPath 1.0中。 :-( – danorton 2011-07-08 20:07:53
/File/Element3/SubElement
将匹配示例XML中的所有SubElement
元素。你用什么来评估它?
如果您的评估方法受限于“第一节点规则”,那么它只会匹配第一个节点。如果您正在使用返回节点集的方法,那么它将返回所有节点集。
您可以通过使用得到所有子元素:
//SubElement
但这不会将它们组合在一起,你怎么想。您将希望对包含SubElement的所有元素执行查询(基本上会搜索任何SubElement的父元素)。
//parent::SubElement
一旦你的,你可以(根据您的编程语言)遍历父母并连接所有的子元素。
第二次不应该是''吗? –
Anthony
2009-12-31 09:59:30
没有那整点 – WtFudgE 2010-01-12 13:35:13