Làm cách nào để thêm Nokogiri::XML::Element
vào tài liệu XML đang được tạo với Nokogiri::XML::Buider
?Thêm phần tử XML vào tài liệu Nokogiri :: XML :: Builder
Giải pháp hiện tại của tôi là sắp xếp lại phần tử và sử dụng phương thức <<
để Builder xây dựng lại nó.
orig_doc = Nokogiri::XML('<root xmlns="foobar"><a>test</a></root>')
node = orig_doc.at('/*/*[1]')
puts Nokogiri::XML::Builder.new do |doc|
doc.another {
# FIXME: this is the round-trip I would like to avoid
xml_text = node.to_xml(:skip_instruct => true).to_s
doc << xml_text
doc.second("hi")
}
end.to_xml
# The expected result is
#
# <another>
# <a xmlns="foobar">test</a>
# <second>hi</second>
# </another>
Tuy nhiên Nokogiri::XML::Element
là một nút khá lớn (theo thứ tự của kilobyte và hàng ngàn nút) và mã này là trong đường dẫn nóng. Hồ sơ cho thấy rằng chuyến đi vòng/tuần tự phân tích rất tốn kém.
Làm cách nào tôi có thể hướng dẫn Trình tạo Nokogiri thêm thành phần XML hiện có node
vào vị trí "hiện tại"?
Điều này tốt hơn nhiều so với kludge của tôi với '# insert'. – gioele