Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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中操作XML文档?_Python_Xml - Fatal编程技术网

有没有一种简单的方法可以在Python中操作XML文档?

有没有一种简单的方法可以在Python中操作XML文档?,python,xml,Python,Xml,我对这件事做了一些研究,但还没有找到任何有用的东西。我需要的不仅仅是解析和读取,而是实际操作python中的XML文档,类似于JavaScript操作HTML文档的方式 请允许我举个例子。假设我有以下XML文档: <library> <book id=123> <title>Intro to XML</title> <author>John Smith</author>

我对这件事做了一些研究,但还没有找到任何有用的东西。我需要的不仅仅是解析和读取,而是实际操作python中的XML文档,类似于JavaScript操作HTML文档的方式

请允许我举个例子。假设我有以下XML文档:

<library>
    <book id=123>
        <title>Intro to XML</title>
        <author>John Smith</author>
        <year>1996</year>
    </book>
    <book id=456>
        <title>XML 101</title>
        <author>Bill Jones</author>
        <year>2000</year>
    </book>
    <book id=789>
        <title>This Book is Unrelated to XML</title>
        <author>Justin Tyme</author>
        <year>2006</year>
    </book>
</library>
如果有人知道Python中有这样一个工具,请告诉我。谢谢

允许您使用XPath选择元素,并操作这些元素

将lxml.etree作为et导入 xmltext= 苹果 梨 芒果 几维鸟 tree=et.fromstringxmltext 对于树中的水果。xpath“//水果”: fruit.text='rotter%s'%fruit.text, print et.tostringtree,pretty_print=True 结果:


如果要避免安装lxml.etree,可以使用标准库中的

这里是移植到xml.etree的:


注:如果我能以一种清晰的方式这样做的话,我会将此作为对Acorn答案的评论。如果您喜欢这个答案,请将投票权交给Acorn。

minidom可能会被认为速度较慢,但它可读性强,类似于JavaScript。尝试此操作时,我在将lxml.etree导入为et时出错,表示没有名为lxml.etreelxml的模块不是标准库的一部分,您还需要签出-非常好,处理树的不同方法…您能解释一下如何安装lxml吗?我试图按照网页上的说明去做,但完全没有成功。我正在运行Windows 7 64位Just install,从这里使用相关的可执行文件:xml.etree是否使用xpath解析树的方法?ElementTree仅支持xpath的一个子集。
>>>xml.getElement('id=123').title="Intro to XML v2"
>>>xml.getElement('id=123').year="1998"
<root>
    <fruit>rotten apple</fruit>
    <fruit>rotten pear</fruit>
    <fruit>rotten mango</fruit>
    <fruit>rotten kiwi</fruit>
</root>
import xml.etree.ElementTree as et  # was: import lxml.etree as et

xmltext = """
<root>
    <fruit>apple</fruit>
    <fruit>pear</fruit>
    <fruit>mango</fruit>
    <fruit>kiwi</fruit>
</root>
"""

tree = et.fromstring(xmltext)

for fruit in tree.findall('fruit'): # was: tree.xpath('//fruit')
    fruit.text = 'rotten %s' % (fruit.text,)

print et.tostring(tree) # removed argument: prettyprint