Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过ElementTree追加和格式化新子元素_Python_Xml_Python 3.x_Elementtree - Fatal编程技术网

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>