0

在使用 KML(当然是 XML)时,我有很多样式——对于人类来说——最容易作为原始 XML 阅读和维护。我想将它们添加到使用 libxml-ruby 构建的 XML 文档中。

这是一个简化的示例:

require 'xml'

raw_xml = <<~END
  <Style>
    <foo>bar</foo>
  </Style>
END

xml = XML::Document.new
xml.root = XML::Node.new(:Document)
xml.root << raw_xml
xml.to_s

结果:

<?xml version="1.0" encoding="UTF-8"?>
<Document>&lt;Style&gt;
  &lt;foo&gt;bar&lt;/foo&gt;
&lt;/Style&gt;
</Document>

这是意料之中的,因为<<它不解析原始 XML。但是,我的问题是,有没有办法做到这一点并获得以下输出?

<?xml version="1.0" encoding="UTF-8"?>
<Document>
  <Style>
    <foo>bar</foo>
  </Style>
</Document>

感谢您的提示!

4

1 回答 1

1

xml.root是 的一个实例LibXML::XML::Node,它的<<, 方法是添加一个节点。不适用于解析 XML 字符串。

要解析字符串,您可以使用例如XML::Parser.string

xml = XML::Document.new
xml.root = XML::Node.new(:Document)
# Parse the string into XML::Document, then take its root node tree
another_doc = XML::Parser.string(raw_xml).parse
node = xml.import(another_doc.root)
xml.root << node
于 2017-04-26T12:48:21.913 回答