从XML中选择节点,其中包含某个属性中的某个字符串

yon*_*oni 2 xml xpath

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

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

我想不是@Id我可以写别的东西来检查节点的所有属性,而不仅仅是Id.

谢谢.

Ian*_*rts 5

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

//Users/*[contains(@*,'TEXT')]
Run Code Online (Sandbox Code Playgroud)

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

//Users/*[@*[contains(.,'TEXT')]]
Run Code Online (Sandbox Code Playgroud)

它将查找Users文档中的所有元素,然后选择所有具有任何属性值的子元素,这些属性的值包含子字符串TEXT.