Tôi đang triển khai một nhà xuất khẩu cho một định dạng dữ liệu XML yêu cầu không gian tên. Tôi đang sử dụng Nokogiri XML Builder (phiên bản 1.4.0) để làm điều này.Tạo một tài liệu XML có phần tử gốc không gian tên với trình tạo Nokogiri
Tuy nhiên, tôi không thể khiến Nokogiri tạo nút gốc bằng không gian tên.
này hoạt động:
Nokogiri::XML::Builder.new { |xml| xml.root('xmlns:foobar' => 'my-ns-url') }.to_xml
<?xml version="1.0"?>
<root xmlns:foobar="my-ns-url"/>
Như thực hiện điều này:
Nokogiri::XML::Builder.new do |xml|
xml.root('xmlns:foobar' => 'my-ns-url') { xml['foobar'].child }
end.to_xml
<?xml version="1.0"?>
<root xmlns:foobar="my-ns-url">
<foobar:child/>
</root>
Tuy nhiên, tôi cần một cái gì đó giống như <foo:root>
và điều này không làm việc:
Nokogiri::XML::Builder.new { |xml| xml['foobar'].root('xmlns:foobar' => 'my-ns-url') }.to_xml
NoMethodError: undefined method `namespace_definitions' for #<Nokogiri::XML::Document:0x11bfef8 name="document">
Namespaces phải được xác định trước khi sử dụng, rõ ràng, vì vậy không có cách nào để thêm một vào nút gốc.
Tôi tìm thấy a question about this on the Nokogiri mailing list, nhưng không có trả lời. Bất cứ ai có một giải pháp?
trình như một say mê. Cảm ơn! –
Bạn, thưa bạn, đã tha cho tôi nhiều sự thất vọng – yalestar
Bạn được chào đón, yalestar. – akuhn