我的XML看起来像这样
<Data>
<a Messages="1">
<b Messages="2" Labelvisibility="yes">
<c Messages="3">
</Data>
我想选择具有名为Labelvisibility属性的元素 . 一次只会有一个这样的元素 .
我的尝试是:(假设“a”是上面的XML文件)
var b = a.selectSingleNode("//Messages[@Labelvisibility]");
根据w3schools,这个表达式: //title[@lang]
选择所有具有名为lang的属性的title元素
所以我试图通过以下示例获取具有属性名称Labelvisibility的元素,但我的代码返回null . 我究竟做错了什么?如果有比w3schools更安全/更智能的方式,请分享 .
谢谢
-------------------------------更新------------------ -------------------.....
在我的问题中,我看到我并不清楚和准确 . 我希望它返回的是:`Messages =“Another”
在另一种情况下,我希望它只返回属性值` . 如果我这样做:
a.selectSingleMode("//@Messages")
它会打印 Messages="1"
如何在有Labelvisibility属性的地方打印“Message”的属性值?
因此它将打印 2
(因为值2是有标签可见性的地方)
1 回答
您的XML中没有Messages元素,这就是结果为null的原因 .
固定版本:
即包含Messages和Labelvisibility属性的所有元素 . 如果检查消息属性是否过剩,则可以简单地删除此谓词 .
这是因为// @ Messages返回三个属性节点,1是根据文档顺序的第一个属性节点 .