修改整个 XML 属性,然后将所有结果合并为一个 XML
Modify entire XML attributes then merge all results into one XML
我正在编写 ElementTree python 代码将:
- 修改xml中的itemID并写入磁盘。
- 转到 itemIDList 中的下一个 itemID 修改 xml 中的 itemID 并写入磁盘
问题是 XML 被一遍又一遍地覆盖,我想要的是将数据附加到新 xml 文件的末尾。
到目前为止,这是我的代码。
base_path = os.path.dirname(os.path.realpath(__file__))
xml_file = os.path.join(base_path, 'data.xml')
tree = ET.parse(xml_file)
root = tree.getroot()
with open('a.txt', 'r') as f:
d = f.readlines()
itemIDlist = []
for i in range(len(d)-1):
hold = d[i].split('\n')
itemIDlist.append(str(hold[0]))
for e in root.iter():
if 'itemID' in e.keys():
e.set('itemID', itemIDlist[i])
new_data = ET.tostringlist(root)
new_xml = open('newXml.xml', 'w')
new_xml.write(new_data)
文本文件有一个这样的数字列表;我们称之为 a.txt
19283
29354
34958
59854
原始 XML 文件如下所示
<requests>
<inventory name="WaterMelon" itemID="6834833" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>
<inventory name="StrawBerry" itemID="9283343" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>
<inventory name="WaterMelon" itemID="" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>-->
</requests>
目前我得到了四个不同的文件,但是,我只想得到一个包含所有结果的 XML 文件。它应该看起来像这样
<requests>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests>
请帮忙
这个link有同样的问题。
我连接了字符串。
with open('a.txt', 'r') as f:
d = f.readlines()
itemIDlist = []
new_data = ''
for i in range(len(d)-1):
hold = d[i].split('\n')
itemIDlist.append(str(hold[0]))
for e in root.iter():
if 'itemID' in e.keys():
e.set('itemID', itemIDlist[i])
new_data += ET.tostring(root)
new_xml = open('newXml.xml', 'w')
new_xml.write(new_data)
这给了我们预期的结果;一个 xml 个文件。
<requests>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests><requests>
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests><requests>
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests>
还有一个问题,当生成 xml 时有一个 > 没有得到正确的解释并输出
>
而不是 >.
我正在编写 ElementTree python 代码将:
- 修改xml中的itemID并写入磁盘。
- 转到 itemIDList 中的下一个 itemID 修改 xml 中的 itemID 并写入磁盘
问题是 XML 被一遍又一遍地覆盖,我想要的是将数据附加到新 xml 文件的末尾。
到目前为止,这是我的代码。
base_path = os.path.dirname(os.path.realpath(__file__))
xml_file = os.path.join(base_path, 'data.xml')
tree = ET.parse(xml_file)
root = tree.getroot()
with open('a.txt', 'r') as f:
d = f.readlines()
itemIDlist = []
for i in range(len(d)-1):
hold = d[i].split('\n')
itemIDlist.append(str(hold[0]))
for e in root.iter():
if 'itemID' in e.keys():
e.set('itemID', itemIDlist[i])
new_data = ET.tostringlist(root)
new_xml = open('newXml.xml', 'w')
new_xml.write(new_data)
文本文件有一个这样的数字列表;我们称之为 a.txt
19283
29354
34958
59854
原始 XML 文件如下所示
<requests>
<inventory name="WaterMelon" itemID="6834833" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>
<inventory name="StrawBerry" itemID="9283343" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>
<inventory name="WaterMelon" itemID="" action="inStock">
<user username="Carlos">
<role name="GeneralManager"/>
</user>
</inventory>-->
</requests>
目前我得到了四个不同的文件,但是,我只想得到一个包含所有结果的 XML 文件。它应该看起来像这样
<requests>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests>
请帮忙
这个link有同样的问题。
我连接了字符串。
with open('a.txt', 'r') as f:
d = f.readlines()
itemIDlist = []
new_data = ''
for i in range(len(d)-1):
hold = d[i].split('\n')
itemIDlist.append(str(hold[0]))
for e in root.iter():
if 'itemID' in e.keys():
e.set('itemID', itemIDlist[i])
new_data += ET.tostring(root)
new_xml = open('newXml.xml', 'w')
new_xml.write(new_data)
这给了我们预期的结果;一个 xml 个文件。
<requests>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="19283" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests><requests>
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="29354" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests><requests>
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="StrawBerry">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>
<inventory action="inStock" itemID="34958" name="WaterMelon">
<user username="Carlos">
<role name="GeneralManager" />
</user>
</inventory>-->
</requests>
还有一个问题,当生成 xml 时有一个 > 没有得到正确的解释并输出
>
而不是 >.