簡體   English   中英

如何向沒有單個根標簽的現有XML添加根

[英]How to add a root to an existing XML which doesn't have a single root tag

我有一個沒有單個根標簽的XML文件。 我想向該XML文件添加一個新的Root標記。

以下是現有的XML:

<A>
    <Val>123</Val>
</A>

<B>
    <Val1>456</Val1>
</B>

現在,我想添加一個根標簽“ X”,因此最終的XML如下所示:

<X>
  <A>
     <Val>123</Val>
  </A>

  <B>
     <Val1>456</Val1>
  </B>
</X>

我嘗試使用以下python代碼:

from xml.etree import ElementTree as ET  
root = ET.parse(Input_FilePath).getroot()   
newroot = ET.Element("X")    
newroot.insert(0, root)    
tree = ET.ElementTree(newroot)    
tree.write(Output_FilePath)

但是在第一行,我得到以下錯誤:

xml.etree.ElementTree.ParseError: junk after document element: line 4, column 4

正如@kjhughes的評論所指出的那樣,XML規范要求文檔必須具有單個根元素。

from xml.etree import ElementTree as ET

node = ET.parse(Input_FilePath)
xml.etree.ElementTree.ParseError: junk after document element: line 4, column 0

您需要手動讀取文件並自己添加標簽:

from xml.etree import ElementTree as ET

with open(Input_FilePath) as f:
    xml_string = '<X>' + f.read() + '</X>'

node = ET.fromstring(xml_string)

我認為您可以在沒有xml解析器的情況下進行操作。 如果您知道根標簽丟失,則可以通過這種方式添加它。

with open('test.xml', 'r') as f:
    data = f.read()

with open('test.xml', 'w') as f:
    f.write("<x>\n" + data + "\n</x>")
    f.close()

如果不知道,您可以通過以下方法進行檢查:

   import re
   if re.match(u"\s*<x>.*</x>", text, re.S) != None:
      #do something   
      pass

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM