使用ElementTree从我的xsd文件中获取值

2024-05-23 19:06:41 发布

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

我想用xml.etree.ElementTree.从我的xsd文件中获取值 我想获取复合体的名称键入应答器(名称:AffleurantEnveloppePCRSType

但是好像不行我不明白为什么

这是我的代码:

import xml.etree.ElementTree as ET 

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

for type_tag in root.findall('complexType'):
    value = type_tag.get('name')
    print(value)

我的xsd文件:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:pcrs="http://cnig.gouv.fr/pcrs" xmlns:pcrs-i="http://cnig.gouv.fr/pcrs-information" targetNamespace="http://cnig.gouv.fr/pcrs" elementFormDefault="qualified" version="2.0beta2">
    <import namespace="http://cnig.gouv.fr/pcrs-information" schemaLocation="./CNIG_PCRS-INFO_v2.0.xsd"/>
    <import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
    <!--XML Schema document created by ShapeChange - http://shapechange.net/-->
    <element name="AffleurantEnveloppePCRS" type="pcrs:AffleurantEnveloppePCRSType" substitutionGroup="gml:AbstractFeature">
        <annotation>
            <documentation>Affleurant du PCRS représenté par son enveloppe (périmètre): Classe permettant de décrire la représentation d'un affleurant sous forme d'enveloppe.
NOTE Polygone (GM_Polygon)
L'enveloppe, autrement dit le périmètre de l'affleurant, est modélisée par un unique polygone non auto-intersectant et ne présentant aucun trou dans sa définition d'intérieur.</documentation>
        </annotation>
    </element>
    <complexType name="AffleurantEnveloppePCRSType">
        <complexContent>
            <extension base="gml:AbstractFeatureType">
                <sequence>
                    <element name="geometrie">
                        <annotation>
                            <documentation>Géométrie de type enveloppe.</documentation>
                        </annotation>
                        <complexType>
                            <sequence minOccurs="0">
                                <element ref="gml:Polygon"/>
                            </sequence>
                            <attributeGroup ref="gml:AssociationAttributeGroup"/>
                        </complexType>
                    </element>

Tags: namehttpnetdocumentationtypeannotationelementfr
1条回答
网友
1楼 · 发布于 2024-05-23 19:06:41

另一种方法

from simplified_scrapy import SimplifiedDoc,utils
xml = '''<?xml version="1.0" encoding="UTF-8"?>
<complexType name="AffleurantEnveloppePCRSType">
    <complexContent>test</complexContent>
</complexType>'''
doc = SimplifiedDoc(xml)
complexTypes = doc.selects('complexType@name="AffleurantEnveloppePCRSType"')
print (complexTypes.text)

结果:

['test']

相关问题 更多 >