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
Python2.7XML—从注释下面的特定注释中获取值_Python_Xml_Elementtree - Fatal编程技术网

Python2.7XML—从注释下面的特定注释中获取值

Python2.7XML—从注释下面的特定注释中获取值,python,xml,elementtree,Python,Xml,Elementtree,他说我在迪纳摩与IronPython 2.7合作。 我需要从一个真正大的xml中的特定注释中获取值。我制作了一个xml示例,以便您更好地理解这个问题。 所以我需要得到“lvl”的值,但只在注释“to”中 在我出错的那一刻: TypeError:列表对象不可损坏“ 对于第行: list.extend(elem.findall(match)) 我做错了什么?有更好/更简单的方法吗 以下是示例xml: <?xml version="1.0" encoding="UTF-8"?> <

他说我在迪纳摩与IronPython 2.7合作。 我需要从一个真正大的xml中的特定注释中获取值。我制作了一个xml示例,以便您更好地理解这个问题。 所以我需要得到“lvl”的值,但只在注释“to”中

在我出错的那一刻:

TypeError:列表对象不可损坏“

对于第行:

list.extend(elem.findall(match))
我做错了什么?有更好/更简单的方法吗

以下是示例xml:

<?xml version="1.0" encoding="UTF-8"?>
<note>
    <note2>
        <yolo>
            <to>
                <type>
                    <game>
                        <name>Jani</name>
                        <lvl>111111</lvl>
                        <fun>2222222</fun>
                    </game>
                </type>
            </to>
            <mo>
                <type>
                    <game>
                        <name>Bani</name>
                        <lvl>3333333</lvl>
                        <fun>44444444</fun>
                    </game>
                </type>
            </mo>
        </yolo>
    </note2>
</note>

如果需要获取“lvl”的值,但只能在注释“to”中获取,则可以使用一个xpath:

import xml.etree.ElementTree as ET
xml="note.xml"
xpathstr=".//to//lvl"
tree = ET.parse(xml)
root = tree.getroot()
specific = root.findall(xpathstr)
list=[]
for elem in specific:
    list.append(elem.text)
print (list)
给出:

['111111']
如果您知道有包含“lvl”的元素“type”和“game”,您可以选择使用xpath“//to/type/game/lvl”或者如果元素“to”必须包含在“yolo”中,则使用“//yolo/to/type/game/lvl”


您可能想使用list.append而不是list.extend,但可能不想,我不知道您的其余代码。

您好,谢谢您的帮助!现在我知道如何正确处理xpath。问题已解决。如果答案已经回答了您的问题,您可以使用答案左侧的按钮接受答案,如果它回答了您的问题,如果您愿意的话
['111111']