【发布时间】:2011-06-20 15:32:52
【问题描述】:
我想检索一个旧的 xml 文件,对其进行操作并保存。
这是我的代码:
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")
我加载的文件包含:
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>,开头没有命名空间。
如何解决这些问题?
【问题讨论】:
标签: python xml namespaces elementtree