Python元素树xml解析器:如何迭代子节点以更改属性?

Python元素树xml解析器:如何迭代子节点以更改属性?,python,xml,parsing,xml-parsing,elementtree,Python,Xml,Parsing,Xml Parsing,Elementtree,我收到一个XML文件,并被要求更改填充颜色。我一直在尝试元素树,每次尝试访问节点时,都会出现语法错误。我已经复制了下面需要解析的XML文件,然后我需要在下面的代码中更改什么: <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg"

我收到一个XML文件,并被要求更改填充颜色。我一直在尝试元素树,每次尝试访问节点时,都会出现语法错误。我已经复制了下面需要解析的XML文件,然后我需要在下面的代码中更改什么:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="300px"
 height="300px" viewBox="0 0 300 300" enable-background="new 0 0 300 300" xml:space="preserve">
<g id="Shapes">
<g id="RootTip">
    <path fill="none" d="M98.178,143.456l112.03-0.079l-5.458,56.235c0,0-1.472,7.203-2.704,7.552s1.086,1.377,1.086,1.377
        l-2.537,12.993l1.751,0.441l-5.252,13.787c0,0,0,6.126,0.219,7.658S196,244.079,196,244.079s-6.784,13.565-8.097,14.879
        s-9.846,8.752-11.597,9.628s-10.941,4.158-10.941,4.158l0.209,1.312L159,273.619V275c0,0-13.547,1.683-17.486-0.943
        s-12.035-7.439-14.879-10.284s-10.722-13.13-12.254-17.287s-7.44-18.38-7.002-20.568s1.094-3.501,1.094-3.501l-3.282-12.254
        l-3.72-32.386l-0.875-5.688l-0.875-9.409L98.178,143.456z"/>
    </g>
</g>
然而,我一直得到这个语法信息

Traceback (most recent call last):
File "<string>", line 2, in <fragment>
Syntax Error: print child.tag, child.attrib: <string>, line 2, pos 15
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
语法错误:print child.tag,child.attrib:,第2行,位置15

有人知道我如何解决这个问题吗?我是编程新手,所以任何反馈都将不胜感激。谢谢大家!

我尝试了您的XML文件,但遇到了一个问题,它不是有效的XML。
未命中
元素或只是


它会产生不同的错误消息,但我看不出您的代码有任何错误,这对我也适用。

我尝试了您的XML文件,但遇到了一个问题,它不是有效的XML。
未命中
元素或只是


它会产生不同的错误消息,但我看不出您的代码有任何错误,这对我也适用。

问题在于您的“XML”文件

我猜您正在查看-查看此XML文件的外观:

<?xml version="1.0"?>
<data>
 <country name="Liechtenstein">
    <rank>1</rank>
    <year>2008</year>
    <gdppc>141100</gdppc>
    <neighbor name="Austria" direction="E"/>
    <neighbor name="Switzerland" direction="W"/>
 </country>
 <country name="Singapore">
    <rank>4</rank>
    <year>2011</year>
    <gdppc>59900</gdppc>
    <neighbor name="Malaysia" direction="N"/>
 </country>
 <country name="Panama">
    <rank>68</rank>
    <year>2011</year>
    <gdppc>13600</gdppc>
    <neighbor name="Costa Rica" direction="W"/>
    <neighbor name="Colombia" direction="E"/>
 </country>
</data>

1.
2008
141100
4.
2011
59900
68
2011
13600
文件中的第一行声明类型,说明它是哪个XML版本

您的文件首先声明它是SVG图形文件:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "

问题在于您的“XML”文件

我猜您正在查看-查看此XML文件的外观:

<?xml version="1.0"?>
<data>
 <country name="Liechtenstein">
    <rank>1</rank>
    <year>2008</year>
    <gdppc>141100</gdppc>
    <neighbor name="Austria" direction="E"/>
    <neighbor name="Switzerland" direction="W"/>
 </country>
 <country name="Singapore">
    <rank>4</rank>
    <year>2011</year>
    <gdppc>59900</gdppc>
    <neighbor name="Malaysia" direction="N"/>
 </country>
 <country name="Panama">
    <rank>68</rank>
    <year>2011</year>
    <gdppc>13600</gdppc>
    <neighbor name="Costa Rica" direction="W"/>
    <neighbor name="Colombia" direction="E"/>
 </country>
</data>

1.
2008
141100
4.
2011
59900
68
2011
13600
文件中的第一行声明类型,说明它是哪个XML版本

您的文件首先声明它是SVG图形文件:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "

它抱怨第2行,位置15,这是文件名country_data.XML,但在我尝试使用for循环之前,我对第2行没有任何问题。。循环是在您开始使用文件内容时发生的,请参见下面的回答
结束标记在XML中缺失。但修复后,我无法重现问题中的错误。它抱怨第2行,位置15,这是文件名country_data.xml,但在我尝试使用for循环之前,我对第2行没有任何问题。循环是在您开始使用文件内容时,请参见下面的答案XML中缺少
结束标记。但是修复了这个问题后,我无法重现问题中的错误。你可以看到
我再次尝试了教程,在第1行的位置1出现了相同的语法错误。“@SophieSu:请确保问题包含重现问题所需的所有内容。人们似乎无法做到这一点,因此缺少了一些内容。请参阅。您可以看到
,我再次尝试了教程,在第1行的位置1处出现了相同的语法错误。错误”@索菲苏:请确保问题包括重现问题所需的一切。人们似乎无法做到这一点,因此缺少了一些东西。看见