2011-05-10 32 views

回答

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。

0

您可以使用[nguyen][1]宝石做解析工作

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')