我试图在其中一个属性中选择包含给定字符串的节点,但似乎我只能在某个属性上执行此操作。
var tempUsers = xmlDocument.selectNodes("//Users/*[contains(@Id,'TEXT')]");
我想不是@Id我可以写别的东西来检查节点的所有属性,而不仅仅是Id。
感谢。
答案 0 :(得分:5)
您可以在xpath中使用@*
来选择所有属性,但是天真的
//Users/*[contains(@*,'TEXT')]
将不按照您的意愿行事。 contains
函数期望其参数为字符串,因此如果您给它一个节点集,它将首先将节点集转换为字符串(通过获取第一个节点的字符串值在集合中)然后在函数中使用该值。相反,你需要说
//Users/*[@*[contains(.,'TEXT')]]
将找到文档中的所有Users
元素,然后选择所有具有任何属性值的子元素,其值包含子字符串TEXT
。