2016-02-23 69 views
0

我有兩個xml文件。我需要添加一個xml文件的內容,例如file1.xml到特定標記之後的另一個文件file2.xml中。在使用python的字符串之後插入文本文件到另一個文本文件中?

file1.xml

<server> 
    <id>6</id> 
    <host_name>abd</host_name> 
</server> 
<server> 
    <id>7</id> 
    <host_name>abc</host_name> 
</server> 

file2.xml

<serverList> 
    <server> 
    <id>10</id> 
    <host_name>bhgd</host_name> 
</server> 
<server> 
    <id>19</id> 
    <host_name>mngvd</host_name> 
</server> 
</serverList> 

我需要標記之前file1.xml插入文件2.XML </serverList>

預期結果:

<serverList> 
     <server> 
     <id>10</id> 
     <host_name>bhgd</host_name> 
    </server> 
    <server> 
     <id>19</id> 
     <host_name>mngvd</host_name> 
    </server> 
    <server> 
     <id>6</id> 
     <host_name>abd</host_name> 
    </server> 
    <server> 
     <id>7</id> 
     <host_name>abc</host_name> 
    </server> 
    </serverList> 
+1

你能否告訴我們到目前爲止你做了什麼? – purplepsycho

回答

1

我假設你沒有一個代碼,以便(您更好地使用XML解析器,但如果你不這樣做):

with open("file1.xml", "r") as f1: 
    lines1 = f1.readlines() 
with open("file2.xml","r") as f2: 
    lines2 = f2.readlines() 
with open("file3.xml","a") as f3: 
    for line in lines2: 
     if line == "</serverList>" 
      f3.write(lines1+"\n") 
      f3.write(line+"\n") 
     else: 
      f3.write(line+"\n") 
import subprocess 
subprocess.call(["mv file3.xml file2.xml"],shell=True) 
0

最好的辦法是經常使用XML解析器。 Dom4j是一款相當不錯的產品。對於這段代碼,您需要dom4j和jaxen jar或maven dependencies。

Document xml1 = new SAXReader().read(new File("file1.xml")); 
Document xml2 = new SAXReader().read(new File("file2.xml")); 
List<Element> servers = (List<Element>) xml1.selectNodes("//*/server"); 
for(Element server : servers) 
xml2.getRootElement().addElement(server); 

然後保存XML2到一個文件中

相關問題