代码之家  ›  专栏  ›  技术社区  ›  Chin

xpath中的“element”和“//element”有什么区别?

  •  1
  • Chin  · 技术社区  · 6 年前

    我正在阅读以下xpath示例: https://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx 我想知道这两个表达式之间的区别:

    author
    All <author> elements within the current context.
    
    //author
    All <author> elements in the document.
    

    这两个案子有什么区别?如果“当前上下文”是根节点,那么这会使这两个节点相等吗?

    对于这个简单的xml文件:

    <root>
        <author>
            <first-name></first-name>
        </author>
    </root>
    

    我在这个网站上试过 https://www.freeformatter.com/xpath-tester.html

    为什么 author 没有按我的预期归还任何东西(但是 //author 行吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   kjhughes    6 年前

    这个 description you cite 对于相对的xpath表达式, author 我是说,

    全部 <author> 当前上下文中的元素。

    错误的 1个 是的。而是应该说,

    全部 <作者> 小孩 当前上下文的元素 节点 是的。

    //author 真的会全选 <作者> 文档中的元素,因为 // 沿 descendant-or-self 轴。

    原因 作者 没有为XML文档选择任何内容,如果将上下文节点设置为文档根,则必须包括 root/author 选择 <作者> 儿童 <root> 或者只是 root 选择 <根目录> 元素本身。

    1个 截至今天,2018-06-24,但我已经提交了反馈,它应该被纠正,所以希望它将很快得到纠正。

        2
  •  2
  •   Hans Kesting    6 年前

    “。” element 选择当前节点的所有名为“element”的直接子级,并与 ./element “。

    “。” //element 选择任意深度的所有“元素”节点,从根节点开始(忽略当前节点)。

    要完成列表:

    “。” .//element 将选择当前节点下任意深度的“element”子节点。

    “。” /element “只在根级别进行搜索(在您的示例中,您需要“/root”来获取任何内容)。

    至于“ author “找不到任何内容:首先需要处于根节点级别。” /root/author 将获得所需的节点,或首先选择 /root “从那里你可以选择” 作者 “。