如何使用 python 在 Xml 的标记行内获取数据?

How to get data inside a Tag line in Xml using python?

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by ABREX Ver. 1.1.0 -->
<AUTOSAR xmlns="http://autosar.org/schema/r4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_4-0-3_STRICT.xsd">
    <AR-PACKAGES>
        <AR-PACKAGE>
            <SHORT-NAME>Ecuc</SHORT-NAME>
            <ELEMENTS>
                <ECUC-MODULE-CONFIGURATION-VALUES>
                    <SHORT-NAME>Os</SHORT-NAME>
                    <DEFINITION-REF DEST="ECUC-MODULE-DEF">/AUTOSAR/EcucDefs/Os</DEFINITION-REF>
                    <ECUC-DEF-EDITION>4.2.0</ECUC-DEF-EDITION>
                    <IMPLEMENTATION-CONFIG-VARIANT>VARIANT-PRE-COMPILE</IMPLEMENTATION-CONFIG-VARIANT>
                    <CONTAINERS>
                        <ECUC-CONTAINER-VALUE>
                            <SHORT-NAME>OsInclude</SHORT-NAME>
                            <DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/EcucDefs/Os/OsInclude</DEFINITION-REF>
                            <PARAMETER-VALUES>
                                <ECUC-TEXTUAL-PARAM-VALUE>
                                    <DEFINITION-REF DEST="ECUC-STRING-PARAM-DEF">/AUTOSAR/EcucDefs/Os/OsInclude/OsIncludeFileName</DEFINITION-REF>
                                    <VALUE>sample1.h</VALUE>
                                </ECUC-TEXTUAL-PARAM-VALUE>
                            </PARAMETER-VALUES>
                        </ECUC-CONTAINER-VALUE>
                        <ECUC-CONTAINER-VALUE>
                            <SHORT-NAME>AppMode1</SHORT-NAME>
                            <DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">/AUTOSAR/EcucDefs/Os/OsAppMode</DEFINITION-REF>
                        </ECUC-CONTAINER-VALUE>                     
                </ECUC-MODULE-CONFIGURATION-VALUES>
            </ELEMENTS>
        </AR-PACKAGE>
    </AR-PACKAGES>
</AUTOSAR>

这是我的代码。我想从 "DEFINITION-REF" 中找到 Tag 的值,即 'DEST'='ECUC-ENUMERATION-PARAM-DEF'。但是我无法获得 'DEST' 的值。当我 运行 下面的代码时,它总是 'None'。你能提供任何解决方案吗?

代码:

    import xml.etree.ElementTree as ET
    import csv
    fpath = 'sample1.arxml'

    tree = ET.parse(fpath)
    root = tree.getroot()

    ns = {'ns': 'http://autosar.org/schema/r4.0'}
    for param1 in root.findall('.//ns:DEFINITION-REF/',  namespaces=ns):
        value = param1.get('DEST')
        print(value)

我使用了您共享的文件并且能够获取 DEFINITION-REF 的属性:

import xml.etree.ElementTree as ET

root = ET.parse('test.xml').getroot()


#run this, and it will list the key value pairs for DEFINITION-REF element : 
for entry in root.findall(".//{http://autosar.org/schema/r4.0}DEFINITION-REF"):
    print(entry.attrib)