【问题标题】:Is there a Nokogiri example code for parsing Acrobat XFDF?是否有用于解析 Acrobat XFDF 的 Nokogiri 示例代码?
【发布时间】:2011-05-10 05:21:46
【问题描述】:

我正在寻找一个显示使用 Nokogiri 解析 Acrobat XFDF 数据的 ruby​​ 代码 sn-p。

【问题讨论】:

    标签: ruby nokogiri xfdf


    【解决方案1】:

    这与解析任何其他 XML 没有什么不同:

    require 'nokogiri'
    
    xfdf = '<?xml version="1.0" encoding="UTF-8"?>
    <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
      <f href="Demo PDF Form.pdf"/>
      <fields>
        <field name="Date of Birth">
          <value>01-01-1960</value>
        </field>
        <field name="Your Name">
          <value>Mr. Customer</value>
        </field>
      </fields>
      <ids original="FEBDB19E0CD32274C16CE13DCF244AD2" modified="5BE74DD4F607B7409DC03D600E466E12"/>
    </xfdf>
    '
    
    doc = Nokogiri::XML(xfdf)
    doc.at('//xmlns:f')['href'] # => "Demo PDF Form.pdf"
    doc.at('//xmlns:field[@name="Date of Birth"]').text # => "\n      01-01-1960\n    "
    doc.at('//xmlns:field[@name="Your Name"]').text # => "\n      Mr. Customer\n    "
    

    它使用 XML 命名空间,因此您必须在 xpath 中尊重它,或者通过告诉 Nokogiri 忽略它们来处理它,但这在 XML 中很常见。

    【讨论】:

      【解决方案2】:

      您可以使用[nguyen][1] gem 来做解析工作

      xfdf = Nguyen::Xfdf.new(:key => 'value', :other_key => 'other value')
      
      # use to_xfdf if you just want the XFDF data, without writing it to a file puts   
      xfdf.to_xfdf
      
      # write xfdf file
      xfdf.save_to('path/to/file.xfdf')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-16
        • 2010-11-20
        • 2012-11-04
        • 2013-04-27
        相关资源
        最近更新 更多