我想檢索一個遺留的xml文件,操作並保存它。Python:XML中的命名空間ElementTree(或lxml)
這裏是我的代碼:
from xml.etree import cElementTree as ET
NS = "{http://www.somedomain.com/XI/Traffic/10}"
def fix_xml(filename):
f = ET.parse(filename)
root = f.getroot()
eventlist = root.findall("%(ns)Event" % {'ns':NS })
xpath = "%(ns)sEventDetail/%(ns)sEventDescription" % {'ns':NS }
for event in eventlist:
desc = event.find(xpath)
desc.text = desc.text.upper() # do some editting to the text.
ET.ElementTree(root, nsmap=NS).write("out.xml", encoding="utf-8")
shorten_xml("test.xml")
文件I負載包括:
xmlns="http://www.somedomain.com/XI/Traffic/10"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.somedomain.com/XI/Traffic/10 10.xds"
在根標籤。
我有以下問題,涉及到的命名空間:
- 正如你看到的,對於每一個標籤調用,我給在開始時的命名空間中檢索一個孩子。
- 生成的xml文件在開始時沒有
<?xml version="1.0" encoding="utf-8"?>
。 - 輸出端的標籤包含這樣的
<ns0:eventDescription>
,而我需要的輸出爲原始的<eventDescription>
,沒有命名空間開頭。
這些如何解決?