好的,所以我有以下 .csv 文件,其中包含:
AAC=1|1|1,AAK=1|2|8
我想将该文件写入以下 .xml 文件:
<html>
<A>
<B>
<C>
<D>
<TYPE>
<NUMBER>7297</NUMBER>
<DATA />
</TYPE>
<TYPE>
<NUMBER>7721</NUMBER>
<DATA>AAC=7|3|8,ABC=1|3|5,DAK=5|1|3,FFK=33</DATA>
</TYPE>
</D>
</C>
</B>
</A>
</html>
我想专门将其写入 7721 下的部分,因此更新后的 .xml 文件如下所示:
<html>
<A>
<B>
<C>
<D>
<TYPE>
<NUMBER>7297</NUMBER>
<DATA />
</TYPE>
<TYPE>
<NUMBER>7721</NUMBER>
<DATA>AAC=1|1|1,AAK=1|2|8,ABC=1|3|5,DAK=5|1|3,FFK=33</DATA>
</TYPE>
</D>
</C>
</B>
</A>
</html>
如您所见,如果 .csv 和 .xml 上都已存在该键,那么它只会更新 .xml 文件上的值,但如果 .csv 文件上的键和值都不存在于 . xml 文件,然后它将这些键和值添加到 .xml 文件中。
到目前为止我的代码:
element = etree.fromstring(xmlData)
# Find all the TYPE with NUMBER=7721 and DATA
optype_nodes = element.xpath("//TYPE[NUMBER='7721' and DATA]")
for t in optype_nodes:
d = t.find('DATA')
d.text = 'csvdata'
print etree.tostring(element)
刚结束导入所有 .csv 内容并完全替换 .xml 内容。
谢谢!