我有以下(简化的)XML ...
<root type="object">
<user type="object">
<id type="number">123</id>
</user>
<id type="number">456</id>
</root>
我正在使用以下内容从根元素中获取Id
Dim Navigator = Document.CreateNavigator()
Dim ns = New XmlNamespaceManager(Navigator.NameTable)
Dim nodes = Navigator.Select("/root", ns)
Dim Node = nodes.Current
Element = Node.SelectSingleNode("/id")
Dim Id = Element.Value
在这种情况下,Element.Value包含用户ID
root id的正确选择器是什么?
答案 0 :(得分:2)
为什么不直接选择root-id节点?
Navigator.Select("/root/id", ns)
答案 1 :(得分:1)
您的问题在这里:
Element = Node.SelectSingleNode("/id")
您已指定应评估绝对表达式/id
。
这是一个绝对 XPath表达式(以/
开头),如果其名称为"id"
,则选择XML文档的顶部元素。在这种特定情况下,top元素的名称是"root"
(不是"id"
),因此XPath表达式不会选择任何内容。
解决方案:或者:
使用相对表达:Element = Node.SelectSingleNode("id")
使用单个XPath表达式选择所需元素:
Element = Navigator.SelectSingleNode("/root", ns)