Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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-如何在xml中查找具有特定属性的所有元素_Python_Xml_Elementtree - Fatal编程技术网

python elementtree-如何在xml中查找具有特定属性的所有元素

python elementtree-如何在xml中查找具有特定属性的所有元素,python,xml,elementtree,Python,Xml,Elementtree,我有类似结构的xml: <terms> <entry ID="1"> <language ID="1">en</language> <term>user</term> <state>text</state> <use>text</use> <definition ID="1">t

我有类似结构的xml:

<terms>
    <entry ID="1">
        <language ID="1">en</language>
        <term>user</term>
        <state>text</state>
        <use>text</use>
        <definition ID="1">text</definition>
            <subdefinition ID="1">text</subdefinition>
        <definition-source>text</definition-source>
        <source ID="1">text</source>
        <circle>text</circle>
    </entry>

EN
用户
文本
文本
文本
文本
文本
文本
文本
在这种情况下,父元素和子元素都包含属性ID。有没有办法,如何从包含属性ID的树中找到所有元素,并将值更改为0或删除它

我曾尝试使用XPath来实现这一点,但当存在较深的层次结构且任何元素都可以具有此属性时,这就很困难了。
另一种方法是将其作为字符串处理,但是在ElementTree中有没有这样做的方法?

使用XPath
//*[@ID]
来选择元素应该相当容易

下面是一个将所有
ID
值更改为
0
的示例

XML输入(test.XML)


EN
用户
文本
文本
文本
文本
文本
文本
文本
Python

将xml.etree.ElementTree作为ET导入
tree=ET.parse(“test.xml”)
对于tree.findall(“.//*[@ID]”)中的元素:
元素属性[“ID”]=“0”
ET.dump(tree.getroot())
输出(转储到控制台)


EN
用户
文本
文本
文本
文本
文本
文本
文本

您应该看看这个: