1

我知道有一些类似的问题,但似乎没有一个解决方案有效。我需要使用 python 解析和 XML 文件。我正在使用 Elementree 我正在尝试打印值 X。只要我只是在 EndPosition 中寻找 X 值,它就可以工作,但我必须在所有 MoveToType 中寻找。有没有办法将它整合到 Elementree 中。谢谢!

XML 文件:

<MiddleCommand xsi:type="MoveToType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <CommandID>19828</CommandID>
        <MoveStraight>false</MoveStraight>
        <EndPosition>
            <Point>
                <X>528.65</X>
                <Y>33.8</Y>
                <Z>50.0</Z>
            </Point>
            <XAxis>
                <I>-0.7071067811865475</I>
                <J>-0.7071067811865477</J>
                <K>-0.0</K>
            </XAxis>
            <ZAxis>
                <I>0.0</I>
                <J>0.0</J>
                <K>-1.0</K>
            </ZAxis>
        </EndPosition>
    </MiddleCommand>

Python代码:

import xml.etree.ElementTree as ET


#tree = ET.parse("102122.955_prog_14748500480769929136.xml")
tree = ET.parse("Move_to.xml")
root = tree.getroot()


for Point in root.findall("./EndPosition/Point/X"):
    print(Point.text)



for Point in root.findall('.//{MoveToType}/Endposition/Point/X'):
    print(Point.text)
4

2 回答 2

2

X以下是如何MiddleCommand使用xsi:type="MoveToType". 请注意,在获取属性值时,您需要在花括号内使用完整的命名空间 URI。

import xml.etree.ElementTree as ET
 
tree = ET.parse("Move_to.xml")  # The real XML, with several MiddleCommand elements
    
for MC in tree.findall(".//MiddleCommand"):
    # Check xsi:type value and if it equals MoveToType, find the X value
    if MC.get("{http://www.w3.org/2001/XMLSchema-instance}type") == 'MoveToType':
        X = MC.find(".//X")
        print(X.text)
于 2021-08-14T10:32:01.590 回答
0

下面将为X您找到任何内容。

for x in root.findall(".//X"):
    print(x.text)
于 2021-08-13T20:07:46.787 回答