使用 ElementTree 在 Python 中解析 xsi:type=""
Parse xsi:type="" in Python using ElementTree
我知道有几个类似的问题,但 none 的解决方案似乎有效。
我需要使用 python 解析 XML 文件。我正在使用元素树
我正在尝试打印值 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)
下面将为您找到任何 X
。
for x in root.findall(".//X"):
print(x.text)
以下是如何使用 xsi:type="MoveToType"
获得 MiddleCommand
元素所需的 X
值。请注意,在获取属性值时需要在花括号内使用完整的命名空间 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)
我知道有几个类似的问题,但 none 的解决方案似乎有效。 我需要使用 python 解析 XML 文件。我正在使用元素树 我正在尝试打印值 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)
下面将为您找到任何 X
。
for x in root.findall(".//X"):
print(x.text)
以下是如何使用 xsi:type="MoveToType"
获得 MiddleCommand
元素所需的 X
值。请注意,在获取属性值时需要在花括号内使用完整的命名空间 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)