2014-04-03 1 views
0

XML 파일 (configs.xml)의 내용을 읽고 다른 XML 파일 (workspace.xml)의 중간에 삽입하려고합니다.XML의 각괄호가 HTML 코드로 대체 되었습니까?

require "nokogiri" 

workspace = File.open("workspace.xml") 
xml = Nokogiri::XML(workspace) 
workspace.close 

# Add new configs 
configs = File.read("configs.xml") 
xml.search('component[name="RunManager"]').each do |node| 
    node.content=configs 
end 

puts xml 

출력은 다음과 같습니다 :

코드입니다

<?xml version="1.0" encoding="UTF-8"?> 
<project version="4"> 
    <component name="AndroidLayoutPreviewToolWindow"> 
    <option name="state"> 
     <GlobalState/> 
    </option> 
    </component> 
    <component name="RunManager" selected="Android Application.Run on device">  
    &lt;configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests"&gt; 
     &lt;module name="" /&gt; 
     &lt;option name="TESTING_TYPE" value="0" /&gt; 
     &lt;option name="INSTRUMENTATION_RUNNER_CLASS" value="" /&gt; 
     &lt;option name="METHOD_NAME" value="" /&gt; 
     &lt;option name="CLASS_NAME" value="" /&gt;   
    &lt;/configuration&gt; 
</component> 
    <component name="ShelveChangesManager" show_recycled="false"/> 
    <component name="SliceManager" selected="Android Application.Run on device"> 
    <option name="analysisUIOptions"> 
     <AnalysisUIOptions/> 
    </option> 
    </component> 
</project> 

당신은 중간에 삽입 된 내용이 HTML 코드 &lt; &gt을 대체 모든 각도 중괄호 < >을 가지고 볼 수 있듯이 , 그리고 나는 이것이 인코딩으로 무언가를해야만한다고 생각하지만, 왜 그런지 모르겠습니다. 가장 흥미로운 무엇

혼자 configs.xml의 내용을 인쇄하기 (하나의 삽입 및 수정 가도록)이라면 출력이로 예상된다는 점이다 :

<configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests"> 
     <option name="TESTING_TYPE" value="0" /> 
     <option name="INSTRUMENTATION_RUNNER_CLASS" value="" /> 
     <option name="METHOD_NAME" value="" /> 
     // ............ 
</configuration> 

답변

1

것은 당신이 실제로 노드 당신의 내용을 설정하는 경우 텍스트를 내용으로 설정하면 Nokogiri가 자동으로 이스케이프 처리합니다.

add_child

configs = File.read("configs.xml") 
xml.search('component[name="RunManager"]').each do |node| 
    node.add_child configs 
end 
를 사용할 필요가 당신의 XML에 노드를 추가하려면