【问题标题】:How to select only paragraphs that contain certain child elements with nokogiri?如何使用 nokogiri 仅选择包含某些子元素的段落?
【发布时间】:2017-05-04 05:35:47
【问题描述】:

我有以下 XML:

<w:p w14:paraId="07E73137" w14:textId="77777777" w:rsidP="00D279DF" w:rsidR="00D279DF" w:rsidRDefault="00D279DF">
</w:p>
<w:p w14:paraId="07E73138" w14:textId="77777777" w:rsidP="00D279DF" w:rsidR="00D279DF" w:rsidRDefault="00D279DF>
    <w:r w:rsidRPr="00922473">
      <w:t xml:space="preserve">Visual attributes </w:t>
    </w:r>
    <w:ins w:author="RKH RKH" w:date="2016-12-17T16:40:00Z" w:id="0">
        <w:r>
            <w:t>an</w:t>
        </w:r>
    </w:ins>
    <w:del w:author="RKH RKH" w:date="2016-12-17T16:40:00Z" w:id="1">
        <w:r w:rsidDel="008B2A6A">
          <w:delText>the</w:delText>
        </w:r>
    </w:del>
</w:p>

第一个&lt;w:p&gt; 元素不包含任何&lt;w:ins&gt;&lt;w:del&gt; 子元素。 但是,第二个&lt;w:p&gt; 确实包含&lt;w:ins&gt;&lt;w:del&gt; 元素。

我目前正在使用以下方法选择所有段落元素:

@all_paragraph_nodes = @file.xpath('//w:p')

我只想选择至少包含一个&lt;w:ins&gt; 元素或&lt;w:del&gt; 元素的段落元素。

如何使用 Nokogiri 做到这一点?

【问题讨论】:

    标签: ruby nokogiri


    【解决方案1】:

    你可以使用:

    @all_paragraph_nodes = @file.xpath('//w:p[w:ins or w:del]')
    

    请注意,您的 XML 的第 3 行有错字:

    w:rsidRDefault="00D279DF
    

    没有关闭。

    【讨论】:

    • 谢谢埃里克。我不喜欢复制我离开关闭的 xml 的代码。
    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 2012-03-27
    • 2014-01-20
    • 1970-01-01
    • 2021-07-19
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多