Python 通过ElementTree追加和格式化新子元素
使用下面的代码,我可以成功地在我想要的地方添加一个子元素,并且在功能上可以正常工作。为了可读性,我想格式化Python 通过ElementTree追加和格式化新子元素,python,xml,python-3.x,elementtree,Python,Xml,Python 3.x,Elementtree,使用下面的代码,我可以成功地在我想要的地方添加一个子元素,并且在功能上可以正常工作。为了可读性,我想格式化item.append插入新子元素的方式。 我的代码: 我感谢你事先的帮助 考虑使用.find()向下走到所需的节点,然后简单地使用子元素添加。使用DOM库(如etree)时,不需要字符串版本的标记: import xml.etree.ElementTree as ET tree = ET.parse("input.xml") root = tree.getroot() while Tr
item.append
插入新子元素的方式。
我的代码:
我感谢你事先的帮助 考虑使用.find()
向下走到所需的节点,然后简单地使用子元素添加。使用DOM库(如etree
)时,不需要字符串版本的标记:
import xml.etree.ElementTree as ET
tree = ET.parse("input.xml")
root = tree.getroot()
while True:
item_add = input("Enter item to add: ")
if item_add == 'x':
break
items = root.find('object').find('items')
tmp = ET.SubElement(items, 'item')
tmp.text = item_add
# PRINT TO SCREEN
print(ET.tostring(root).decode('utf-8'))
# SAVE TO FILE
tree.write('output.xml')
输出(在输入中输入cat、frog、zebra后,使用x结束循环)
狗
卡特夫罗泽布拉
使用内置的mini.dom
或第三方的lxml
用于
<interface>
<object>
<items>
<item>dog</Item>
</items>
</object>
</interface>
<interface>
<object>
<items>
<item>dog</item>
<item>cat</item>
</items>
</object>
</interface>
<interface>
<object>
<items>
<item>dog</item>
<item><item>cat</item></item></items>
</object>
</interface>
import xml.etree.ElementTree as ET
tree = ET.parse(file.xml)
root = tree.getroot()
while True:
item_add = input("Enter item to add: 'n")
item_string = '<item>'
item_string += item_add
item_string += '</item>'
for items in root.iter('items'):
item = ET.SubElement(items, 'item')
item.append((ET.fromstring(item_string)))
tree.write('output.xml')
#Code asking for more input, if none break out of loop
import xml.etree.ElementTree as ET
tree = ET.parse("input.xml")
root = tree.getroot()
while True:
item_add = input("Enter item to add: ")
if item_add == 'x':
break
items = root.find('object').find('items')
tmp = ET.SubElement(items, 'item')
tmp.text = item_add
# PRINT TO SCREEN
print(ET.tostring(root).decode('utf-8'))
# SAVE TO FILE
tree.write('output.xml')
<interface>
<object>
<items>
<item>dog</item>
<item>cat</item><item>frog</item><item>zebra</item></items>
</object>
</interface>