Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net XPath从正确级别选择节点_.net_Xml_Xpath - Fatal编程技术网

.net XPath从正确级别选择节点

.net XPath从正确级别选择节点,.net,xml,xpath,.net,Xml,Xpath,我得到了以下(简化的)XML 在本例中,Element.Value包含用户Id 根Id的正确选择器是什么?为什么不直接选择根Id节点 Navigator.Select("/root/id", ns) 你的问题就在这里: Element = Node.SelectSingleNode("/id") 您已指定应计算绝对表达式/id 这是一个绝对的XPath表达式(以/开头),如果XML文档的名称是“id”,它将选择XML文档的顶部元素。在这种特定情况下,顶部元素的名称是“root”(而不是“i

我得到了以下(简化的)XML

在本例中,Element.Value包含用户Id


根Id的正确选择器是什么?

为什么不直接选择根Id节点

Navigator.Select("/root/id", ns)

你的问题就在这里

Element = Node.SelectSingleNode("/id") 
您已指定应计算绝对表达式
/id

这是一个绝对的XPath表达式(以
/
开头),如果XML文档的名称是
“id”
,它将选择XML文档的顶部元素。在这种特定情况下,顶部元素的名称是
“root”
(而不是
“id”
),因此XPath表达式不选择任何内容

解决方案:或者:

  • 使用相对表达式:
    Element=Node。选择singlenode(“id”)

  • 使用单个XPath表达式选择所需的元素

  • Element = Node.SelectSingleNode("/id") 
    


    谢谢你更详细的解释。我尝试了
    /id
    id
    ,但都没有返回任何结果。也许我是从错误的节点开始的,或者是从其他同样愚蠢的节点开始的-我看不出它失败的另一个原因。@Basiclife:也许
    node
    的定义不正确。可能是这样的:
    Dim Node=Navigator.SelectSingleNode(/*)
    Element = Node.SelectSingleNode("/id") 
    
        Element = Navigator.SelectSingleNode("/root", ns)