Tôi muốn sử dụng Nokogiri để chèn các nút vào một tài liệu XML. Nokogiri sử dụng lớp Nokogiri::XML::Builder
để chèn hoặc tạo XML mới.Nokogiri và định dạng XML khi chèn thẻ
Nếu tôi có thể tạo XML bằng cách sử dụng phương pháp new
, tôi có thể để tạo ra tốt đẹp, định dạng XML:
builder = Nokogiri::XML::Builder.new do |xml|
xml.product {
xml.test "hi"
}
end
puts builder
kết quả đầu ra như sau:
<?xml version="1.0"?>
<product>
<test>hi</test>
</product>
Đó là tuyệt vời, nhưng những gì tôi muốn làm là thêm XML ở trên vào tài liệu hiện có, không tạo tài liệu mới. Theo tài liệu Nokogiri, điều này có thể được thực hiện bằng cách sử dụng phương pháp with
của Builder, như vậy:
builder = Nokogiri::XML::Builder.with(document.at('products')) do |xml|
xml.product {
xml.test "hi"
}
end
puts builder
Khi tôi làm điều này, tuy nhiên, tất cả XML được đưa vào một dòng duy nhất không có thụt đầu dòng. Có vẻ như sau:
<products><product><test>hi</test></product></products>
Tôi có thiếu thứ gì đó để định dạng chính xác không?
tôi đang tìm kiếm một lá cờ ngày khác khi tôi nhìn thấy câu hỏi của bạn, nhưng đã bị xao lãng khi cạo một cái yak. +1 cho bạn để tìm câu trả lời và đăng nó, và +1 cho Nokogiri để lắc lư. –
dễ hiểu. những yaks không cạo mình (chưa). – michaelmichael
Lưu ý rằng trong Ruby 1.9, bạn có thể chỉ định cờ noblanks đơn lẻ theo một cách ngắn gọn hơn: 'doc = Nokogiri :: XML (xml, &: noblanks)' – Phrogz