【问题标题】:How to select an element only if the next element is of a specific type using Nokogiri仅当下一个元素是使用 Nokogiri 的特定类型时如何选择一个元素
【发布时间】:2017-05-31 04:15:22
【问题描述】:

给定以下 XML:

<w:p>
   <w:pPr>
      <w:lang w:val="en-CA"/>
   </w:pPr>
   <w:ins>
        <w:t>sections</w:t>
   </w:ins>
   <w:pPr>
      <w:lang w:val="en-CA"/>
   </w:pPr>
   <w:r>
     <w:t>I am</w:t>
   </w:r>
</w:p>

我想选择后跟w:insw:del 元素的w:pPr 元素。

我试过了:

doc.xpath("w:pPr[following-sibling::w:ins[1] or following-sibling::w:del[1]]")

它仍然返回第二个 w:pPr 元素,后面跟着一个 w:r 元素,所以这不是我要找的。​​p>

我该怎么做?

【问题讨论】:

    标签: ruby xpath nokogiri


    【解决方案1】:

    试试这个 XPath 表达式:

    //w:pPr[following-sibling::*[position()=1][name()='w:del' or name()='w:ins']]
    

    【讨论】:

    • 我试过了,结果还是返回了pPr元素,后面跟着w:r元素
    • 对不起,我打错了。这行得通。我怎样才能将其仅应用于一个段落。如果我有段落,paragraph_1.xpath(...) 例如?
    • 我不确定我是否正确理解了您的问题...如果您只想要第一次出现,那么只需添加 [1] 谓词
    • 抱歉不清楚。我有一个包含很多段落的文件。我一次用一个段落做一些分析。如果我想在特定段落中查找所有 w:pPr 元素,其中每个元素必须后跟 w:ins 或 w:del 我将如何更改 xpath 语句?
    • 仍然不确定我明白你的意思:) 如果你想从特定段落中获取w:pPr,你可以添加适当的父/祖先元素://w:paragraph[...]//w:pRp[...]。使用谓词或索引来匹配确切的段落。您可以使用更大的HTML 示例更新您的问题,以使您的问题更清晰
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多