Python Lxml - 添加已有的XML与新的d

2024-05-17 02:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

在阅读了lxml站点之后,我对python/lxml有了新的认识,并且深入到python中,我找不到解决n00b问题的方法。我有以下xml示例:

---------------
<addressbook>
    <person>
        <name>Eric Idle</name>
        <phone type='fix'>999-999-999</phone>
        <phone type='mobile'>555-555-555</phone>
        <address>
            <street>12, spam road</street>
            <city>London</city>
            <zip>H4B 1X3</zip>
        </address>
    </person>
</addressbook>
-------------------------------

我试图将一个子元素附加到根元素,并将整个文件作为新的xml写回,或者重写现有的xml。目前我只写了一行。

from lxml import etree
tree = etree.parse('addressbook.xml')
root = tree.getroot()
oSetroot = etree.Element(root.tag)
NewSub = etree.SubElement ( oSetroot, 'CREATE_NEW_SUB' )
doc = etree.ElementTree (oSetroot)
doc.write ( 'addressbook1.xml' )

短暂性脑缺血发作


Tags: nametree元素streetcityaddresstypephone
1条回答
网友
1楼 · 发布于 2024-05-17 02:35:27

您可以通过复制旧树的所有树(而不仅仅是根标记)来创建新树!-),但是就地编辑现有的树要简单得多(为什么不呢?-)…:

tree = etree.parse('addressbook.xml')
root = tree.getroot()
NewSub = etree.SubElement ( root, 'CREATE_NEW_SUB' )
tree.write ( 'addressbook1.xml' )

它放入addressbook1.xml

<addressbook>
    <person>
        <name>Eric Idle</name>
        <phone type="fix">999-999-999</phone>
        <phone type="mobile">555-555-555</phone>
        <address>
            <street>12, spam road</street>
            <city>London</city>
            <zip>H4B 1X3</zip>
        </address>
    </person>
<CREATE_NEW_SUB /></addressbook>

(我希望这是你想要的效果。。。?-)

相关问题 更多 >