2

我试图选择在其属性之一中包含给定字符串的节点,但似乎我只能在某个属性上执行此操作。

var tempUsers = xmlDocument.selectNodes("//Users/*[contains(@Id,'TEXT')]");

我猜我可以写其他东西而不是@Id来检查节点的所有属性,而不仅仅是Id。

谢谢。

4

1 回答 1

5

您可以@*在 xpath 中使用来选择所有属性,但天真

//Users/*[contains(@*,'TEXT')]

不会你所期望的。该contains函数期望它的参数是字符串,所以如果你给它一个节点集,它会首先将节点集转换为字符串(通过获取集合中第一个节点的字符串值),然后在函数中使用该值. 相反,你需要说

//Users/*[@*[contains(.,'TEXT')]]

它将查找Users文档中的所有元素,然后选择其所有具有其值包含 substring 的任何属性的子元素TEXT

于 2012-10-21T12:46:20.880 回答