我有一个相当深度嵌套的xml结构,我想在选择一个节点后找到一个具有特定值的元素。在下面的示例中,我有一个'B'数组,在选择每个'B'节点后,我想得到一个以'history'开头的子节点(不一致)的文本
<A>
<Items>
<B>
<C>
<D>history: pressed K,E</D> // could be nested anywhere
</C>
</B>
<B>
<C>
<E>history: pressed W</E>
</C>
</B>
</Items>
</A>
// Select the nodes from the array (B)
var nodes = select(xmldoc, "//A/Items/B");
// Iterate through the nodes.
nodes.forEach(node){
// is it possible to select any element that starts with the text 'history' from the already selected node.
var history = select(node, "???[starts-with(.,'history')]");
我见过的所有样本都以:// * [text()]从结构的根目录进行搜索。
答案 0 :(得分:0)
it('check export name', function(done) {
locale.ready('export')
.then(function() {
expect(myService.getExcelName()).toBe('Status Report');
done();
})
.catch(done.fail);
});
看起来会像你想要的那样。
选择“//B//*[starts-with(normalize-space(), 'history')]
的任何后代元素,其文字内容以<B>
”开头。
通常不需要手动迭代来查找更多节点。 XPath为你做到了。如果由于某些其他原因必须进行迭代,请使用上下文节点'history'
进行选择。
.
如果您实际上正在寻找“任何文本节点......”
nodes.forEach(function (node) {
var history = select(node, "./*[starts-with(.,'history')]");
});
或“任何没有其他子元素的元素节点......”
//B//text()[starts-with(normalize-space(), 'history')]