Как редактировать XML-файл с помощью Python - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь редактировать строку в файле XML. Один из элементов XML, называемый полилинией, содержит координаты:

<location>
  <street>Interstate 76 (Ohio to Valley Forge)</street>
  <direction>ONE_DIRECTION</direction>
  <location_description>Donegal, PA</location_description>
  <polyline>40.100045 -79.202435, 40.09966 -79.20235, 40.09938 -79.20231<polyline>
</location>

Мне нужно изменить порядок и добавить запятую между координатами, чтобы она была записана как:

<polyline>-79.202435,40.100045,-79.20235,40.09966,-79.20231,40.09938<polyline>

Я могу разобрать файл и отформатировать элемент ломаной линии, но не уверен, как записать его обратно в файл XML:

from xml.dom import minidom
mydoc = minidom.parse(xmlFile)

items = mydoc.getElementsByTagName('polyline')
for item in items:
    newPolyline = []
    lineList = item.firstChild.data.split(",")
    for line in lineList:
        lon = line.split(" -")[1]
        lat = line.split(" -")[0]
        newPolyline.append(str(lon))
        newPolyline.append(str(lat))

1 Ответ

0 голосов
/ 17 сентября 2018

Код может выглядеть примерно так:

from xml.dom.minidom import parseString

xmlobj = parseString('''<location>
    <street>Interstate 76 (Ohio to Valley Forge)</street>
    <direction>ONE_DIRECTION</direction>
    <location_description>Donegal, PA</location_description>
    <polyline>40.100045 -79.202435, 40.09966 -79.20235, 40.09938 -79.20231</polyline>
</location>''')

polyline = xmlobj.getElementsByTagName('polyline')[0].childNodes[0].data
xmlobj.getElementsByTagName('polyline')[0].childNodes[0].data = ','.join(
    ','.join(pair.split()[::-1]) for pair in polyline.split(','))
print(xmlobj.toxml())

В этом решении предполагается, что в XML имеется только один тег polyline.

...