如果特定的XML结构通过,则过滤值

时间:2018-10-19 12:14:29

标签: python xml python-3.x

我有一个看起来像这样的XML(具有很多值):

<gml:interior>
    <gml:LinearRing>
      <gml:posList srsDimension="3" count="7">253602.645 593015.808 0.0 253603.97 593021.537 0.0 253611.953 593019.691 0.0 253609.047 593007.125 0.0 253603.484 593008.412 0.0 253605.065 593015.248 0.0 253602.645 593015.808 0.0</gml:posList>
    </gml:LinearRing>
  </gml:interior>
  <gml:exterior>
    <gml:LinearRing>
      <gml:posList srsDimension="3" count="9">253630.858 593000.326 0.0 253629.502 592994.829 0.0 253627.382 592995.352 0.0 253625.6 592988.13 0.0 253614.622 592990.839 0.0 253616.723 592999.355 0.0 253621.946 592998.067 0.0 253622.983 593002.269 0.0 253630.858 593000.326 0.0</gml:posList>
    </gml:LinearRing>
  </gml:exterior>

在python项目中,我获得了“ gml:posList”值并将其放在列表中:

from lxml import etree as ET

tree = ET.parse("/Users/Admin/jm.xml")
root = tree.getroot()
building_list=[]

# XML is using gml formatting
for a in root.findall('.//{http://www.opengis.net/gml}posList'):
    building_list.append([a.text])

building_list

我只希望“ posList”值位于“ gml:exterior”括号内,而不希望它们位于“ gml:interior”中。该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以改用以下XPath:

.//{http://www.opengis.net/gml}exterior//{http://www.opengis.net/gml}posList