Получить координаты (x, y) из файла xml и поместить его в список с плавающей точкой - PullRequest
0 голосов
/ 04 марта 2020

Я хочу поместить несколько координат (x, y), восстановленных из файла xml, в список, который я могу использовать с функцией drawcontour или polyline, проблема в том, что я не знаю, как поместить их в список Я использовал liste.append, но он не работает :(, пожалуйста, помогите мне

<?xml version="1.0" ?>
<TwoDimensionSpatialCoordinate>
    <coordinateIndex value="0"/>
        <x value="302.6215607602997"/>
        <y value="166.6285651861381"/>
    <coordinateIndex value="1"/>
        <x value="3.6215607602997"/>
        <y value="1.6285651861381"/>
</TwoDimensionSpatialCoordinate>
import xml.dom.minidom


def main(file):
    doc = xml.dom.minidom.parse(file)
    values = doc.getElementsByTagName("coordinateIndex")
    coordX = doc.getElementsByTagName("x")
    coordY = doc.getElementsByTagName("y")
    d = []
    for  atr_x in  coordX:
        for   atr_y in  coordY:
            x = atr_x.getAttribute('value')
            y = atr_y.getAttribute('value')
            print("x",x,"y",y)
    d.append(x)
    d.append(y)
    print(d)


result = main('1.631791322.58809740.14.834982.40440.3641459051.955.6373933.1920.xml')
print(result)

Вывод:

x 302.6215607602997 y 179.53418754193044
x 317.14038591056607 y 179.53418754193044
x 328.11016491298955 y 179.53418754193044
x 337.6280614003864 y 179.53418754193044
x 350.0497229178365 y 179.53418754193044
x 363.9232669503133 y 179.53418754193044

Это результат, когда я получаю координацию x, y от xml файл, но когда я добавляю d.append, он не определяет d: NameError: name 'd' is not defined.

Ответы [ 2 ]

1 голос
/ 04 марта 2020
  1. Ваш XML странный (x и y не в coordinateIndex)
  2. Отступ имеет значение в python
  3. Возможно, вы захотите попробовать ElementTree, который считается лучшей альтернативой minidom
  4. Рабочий код для minidom и ваш формат ввода
def main(file):
    doc = xml.dom.minidom.parse(file)
    coordX = doc.getElementsByTagName("x")
    coordY = doc.getElementsByTagName("y")
    d = []
    for atr_x, atr_y in zip(coordX, coordY):
        x = atr_x.getAttribute('value')
        y = atr_y.getAttribute('value')
        print("x", x, "y", y)
        d.append(x)
        d.append(y)
    return d
0 голосов
/ 04 марта 2020

теперь это работает: D я поставил код на тот случай, если кому-то понадобится позже

import xml.dom.minidom
import cv2 
import numpy as np
import matplotlib.pyplot as plt



def main(file):
    doc = xml.dom.minidom.parse(file)
    coordX = doc.getElementsByTagName("x")
    coordY = doc.getElementsByTagName("y")
    d = []
    for atr_x, atr_y in zip(coordX, coordY):
        x = atr_x.getAttribute('value')
        y = atr_y.getAttribute('value')
        #print("x", x, "y", y)
        d.append(x)
        d.append(y)

    a = map(float, d)
    print(tuple(zip(a, a)))

    return a  

result = main('1.631791322.58809740.14.834982.40440.3641459051.955.6373933.1920.xml')
print(result)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...