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

2024-04-26 17:20:08 发布

您现在位置: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”中找到标记的值,它是'DEST'='ECUC-ENUMERATION-PARAM-DEF'。但我无法得到'DEST'的值。当我运行下面的代码时,它总是“无”。你能提供一些解决方案吗

代码:

    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)

Tags: nameorgrefhttpparamvalueoscontainer
1条回答
网友
1楼 · 发布于 2024-04-26 17:20:08

我使用了u共享的文件,并能够获得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)

相关问题 更多 >