2012-01-17 33 views
16

thể trùng lặp:
Print an XML document without the XML header line at the topLàm cách nào để tạo XML bằng Nokogiri mà không có "<? Xml version = ..."?

Tôi có một vấn đề với Nokogiri :: XML :: Builder. Tôi tạo ra XML wth mã này:

builder = Nokogiri::XML::Builder.new do 
    request { 
     data '1' 
    } 
end 

Và kết quả là:

<?xml version="1.0" encoding="UTF-8"?><request><data>1</data></request> 

Làm thế nào tôi có thể loại bỏ:

<?xml version="1.0" encoding="UTF-8"?> 

từ XML của tôi?

Trả lời

24

Có thể chỉ lấy nút gốc của đối tượng Tài liệu hiện tại đang được xây dựng – .doc – thay vì toàn bộ tài liệu?

builder.doc.root.to_s 
+0

nó gây lỗi (Tài liệu đã có một nút gốc). Nhưng builder.parent.root.to_s thì không. Cảm tạ. Bạn làm cho tôi điều đúng cách) – mibon

+5

Nên là 'builder.doc.root.to_xml' (hoặc' to_s'). – Phrogz

5

Một câu trả lời nhanh chóng và dơ bẩn là để nói Nokogiri để reparse kết quả đầu ra, sau đó nhìn vào root:

require 'nokogiri' 

builder = Nokogiri::XML::Builder.new do 
    request { 
    data '1' 
    } 
end 

puts Nokogiri::XML(builder.to_xml).root.to_xml 

Những kết quả đầu ra:

<request> 
    <data>1</data> 
</request> 
Các vấn đề liên quan