繁体   English   中英

用值解析xsd [python]

[英]Parse xsd with values [python]

我正在尝试使用python检查并从xml文件中提取一些数据。 我这样做是通过解析etree然后循环遍历元素:

import xml.etree.ElementTree as etree
    root = etree.fromstring(xml_string) 

for element in root.iter():
    print("%s , %s , %s" % (element.tag, element.attrib, element.text))

对于某些测试数据,这可以正常工作,但是我正在使用的实际xml文件似乎与数据一起包含xsd标记。 下面是一个例子

<wdtf:observationMember>
  <wdtf:TimeSeriesObservation gml:id="ts1">
    <gml:description>Reading using DTW (Depth To Water) from TOC</gml:description>
    <gml:name codeSpace="http://www.bom.gov.au/std/water/xml/wio0.2/feature/TimeSeriesObservation/w00066/12/A/GroundWaterLevel/">1</gml:name>
    <om:procedure xlink:href="#gwTOC12" />
    <om:observedProperty xlink:href="http://www.bom.gov.au/std/water/xml/wio0.2/property//bom/GroundWaterLevel_m" />
    <om:featureOfInterest xlink:href="http://www.bom.gov.au/std/water/xml/wio0.2/feature/BorePipeSamplingInterval/w00066/12" />
    <wdtf:metadata>
      <wdtf:TimeSeriesObservationMetadata>
        <wdtf:regulationProperty>Reg200806.s3.2a</wdtf:regulationProperty>
        <wdtf:status>validated</wdtf:status>
      </wdtf:TimeSeriesObservationMetadata>
    </wdtf:metadata>
    <wdtf:result>
      <wdtf:TimeSeries>
        <wdtf:defaultInterpolationType>InstVal</wdtf:defaultInterpolationType>
        <wdtf:defaultUnitsOfMeasure>m</wdtf:defaultUnitsOfMeasure>
        <wdtf:defaultQuality>quality-A</wdtf:defaultQuality>
        <wdtf:timeValuePair time="1915-12-09T12:00:00+10:00">51.82</wdtf:timeValuePair>
        <wdtf:timeValuePair time="1917-12-18T12:00:00+10:00">41.38</wdtf:timeValuePair>
        <wdtf:timeValuePair time="1924-05-23T12:00:00+10:00">21.95</wdtf:timeValuePair>
        <wdtf:timeValuePair time="1988-02-02T12:00:00+10:00">7.56</wdtf:timeValuePair>
      </wdtf:TimeSeries>
    </wdtf:result>
  </wdtf:TimeSeriesObservation>
</wdtf:observationMember>

在上面的代码中使用此xml会导致etree返回错误:

Traceback (most recent call last):
File "xml_test2.py", line 38, in <module>
root = etree.fromstring(xml_string)
File "<string>", line 124, in XML
ParseError: unbound prefix: line 1, column 4

我应该使用其他解析器吗? 还是可以删除xsc标签?

谢谢

从您的帖子中可以看到,您的解析器可以识别名称空间,并且抱怨XML名称空间别名未解析。 假设<wdtf:observationMember>是您的最高元素,那么您至少必须具有以下条件:

<wdtf:observationMember xmlns:wdtf="some-uri">

所有其他前缀也是如此,例如gmlom等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM