XML递归搜索并获取attribu中特定键的值

2024-06-09 04:49:53 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的XML文件:

   <?xml version="1.0" encoding="UTF-8"?>

    <edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
      <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Measures.V1.xml">
        <edmx:Include Namespace="Org.OData.Measures.V1" Alias="Measures"/>
      </edmx:Reference>
      <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/RedfishExtensions_v1.xml">
        <edmx:Include Namespace="RedfishExtensions.v1_0_0" Alias="Redfish"/>
        <edmx:Include Namespace="Validation.v1_0_0" Alias="Validation"/>
      </edmx:Reference>
      <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Resource_v1.xml">
        <edmx:Include Namespace="Resource"/>
        <edmx:Include Namespace="Resource.v1_0_0"/>
        <edmx:Include Namespace="Resource.v1_1_0"/>
      </edmx:Reference>
      <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Thermal_v1.xml">
        <edmx:Include Namespace="Thermal"/>
      </edmx:Reference>
      <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Power_v1.xml">
        <edmx:Include Namespace="Power"/>
      </edmx:Reference>
    </edmx:Edmx>

我想使用XML的递归搜索来获得edmx:Reference属性中Uri的值。 我的问题是如何获取XML文件的edmx:Reference属性中所有Uri键的值在


Tags: orghttpincludexmlurinamespaceschemasresource
2条回答

另一种使用正则表达式的方法。。如果你想用的话:(我想我也可以加上我的答案)

import re

with open("example.xml") as xml_file:
    xml_data = xml_file.readlines()

    for line in xml_data:
            check = re.findall('<edmx:Reference Uri="(.*)">', line)
            if len(check) != 0:
                print(check[0])

您可以这样获取uri:

import xml.etree.ElementTree as ET


tree = ET.parse('Chassis_v1.xml')
root = tree.getroot()

for item in root.findall('{http://docs.oasis-open.org/odata/ns/edmx}Reference'):
    if 'Uri' in item.attrib:
        print (item.attrib['Uri'])

相关问题 更多 >