Фильтр для значений, если определенная структура XML проходит

1

У меня есть 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: external", а не когда они находятся в "gml: interior". Как это может быть сделано?

Теги:
python-3.x

1 ответ

1
Лучший ответ

Вместо этого вы можете использовать следующий XPath:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню