使用ruby中的xpath有条件地和递归地为word文档xml提取属性

时间:2015-12-06 08:07:28

标签: ruby xpath attributes

[我有一个单词doc xml like:



   <w:document>
     <w:body>
    <w:p w14:paraId="5B6351BB" w14:textId="0D9644FF" w:rsidR="00432348" w:rsidRDefault="00432348" w:rsidP="00432348">
      <w:pPr>
        <w:pStyle w:val="Heading1"/>
      </w:pPr>
      <w:bookmarkStart w:id="27" w:name="_Toc435537885"/>
      <w:r>
        <w:t>TESTPLAN</w:t>
      </w:r>
      <w:bookmarkEnd w:id="26"/>
      <w:r w:rsidR="00B46E57">
        <w:t xml:space="preserve"> – PART I</w:t>
      </w:r>
      <w:bookmarkEnd w:id="27"/>
    </w:p>
       </w:body>
     <w:document>
&#13;
&#13;
&#13;

我想提取Heading1的文本,因此编写了以下代码,但它似乎不起作用。 @doc.xpath('//w:document//w:body//w:p[w:pPr//w:pStyle[@val]="Heading1"]//w:r//w:t') 代替@val,我尝试@w:val并代替"Heading"我尝试'Heading'进行比较。但它仍然返回零值。

1 个答案:

答案 0 :(得分:0)

您输入错误w:pStyle[@w:val]="Heading1"部分。它应该是w:pStyle/@w:val="Heading1"。然后它会工作。

纠正XPATH:

//w:document//w:body//w:p[w:pPr//w:pStyle/@w:val="Heading1"]//w:r//w:t