我正在使用ElementTree
从XML中删除许多元素,然后将其写回。
编写文件后,名称空间的标签都已更改。
因此,使用XML的应用程序不再接受更新的文件。
是否可以告诉ElementTree
保留原始标签?
例如。这是源XML的一部分:
<gnc:account version="2.0.0">
<act:name>Root Account</act:name>
<act:id type="guid">9f8f1286bffd64d6dff54385a62b2650</act:id>
<act:type>ROOT</act:type>
<act:commodity>
<cmdty:space>ISO4217</cmdty:space>
<cmdty:id>NZD</cmdty:id>
</act:commodity>
<act:commodity-scu>100</act:commodity-scu>
</gnc:account>
写完之后:
<ns0:account version="2.0.0">
<ns5:name>Root Account</ns5:name>
<ns5:id type="guid">9f8f1286bffd64d6dff54385a62b2650</ns5:id>
<ns5:type>ROOT</ns5:type>
<ns5:commodity>
<ns4:space>ISO4217</ns4:space>
<ns4:id>NZD</ns4:id>
</ns5:commodity>
<ns5:commodity-scu>100</ns5:commodity-scu>
</ns0:account>
我正在使用的python代码是:
import xml.etree.ElementTree as ET
tree = ET.parse('file1.xml')
root = tree.getroot()
tree.write('file2.xml')
答案 0 :(得分:0)
切换到import lxml.etree as ET
tree = ET.parse(args.infile)
root = tree.getroot()
tree.write(args.outfile,
xml_declaration=True,encoding='utf-8',
method="xml")
使其正常工作:
<gnc:account version="2.0.0">
<act:name>Root Account</act:name>
<act:id type="guid">9f8f1286bffd64d6dff54385a62b2650</act:id>
<act:type>ROOT</act:type>
<act:commodity>
<cmdty:space>ISO4217</cmdty:space>
<cmdty:id>NZD</cmdty:id>
</act:commodity>
<act:commodity-scu>100</act:commodity-scu>
</gnc:account>
现在输出是:
self.writer = cv.CreateVideoWriter("test1.mp4", cv2.cv.CV_FOURCC('M', 'J', 'P', 'G'), fps, frame_size, is_color )
self.writer = cv.CreateVideoWriter("tsest3.mp4",cv.CV_FOURCC(*'H264'), fps, (320, 240), is_color )
self.writer = cv.CreateVideoWriter("test4.mpg", cv.CV_FOURCC('P', 'I', 'M', '1'), fps, (320, 240), is_color )
...这与输入完全相同。