2017-04-25 15 views
0

KML (물론 XML 임)으로 작업하기 때문에 사람을 위해 - 원시 XML로 읽고 유지하기 쉬운 스타일이 많이 있습니다. 나는 이것을 libxml-ruby로 빌드 된 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> 

힌트를 보내 주셔서 감사합니다!

답변

1

xml.rootLibXML::XML::Node의 인스턴스이고, <<은 노드를 추가하는 방법입니다. XML 문자열을 구문 분석하지 않습니다.

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 
:

문자열을 구문 분석하려면, 예를 XML::Parser.string에 사용할 수있는