ElementTree XML 正在解析 Python,XML 结构有问题
ElementTree XML Parsing Python, Problem with XML structure
之前有一个关于Elemttree解析的问题,第二天就得到了解答。我仍然不是 python 的专业人士,因此再次需要帮助。
<MiddleCommand xsi:type="SetEndPoseToleranceType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CommandID>19827</CommandID>
<Tolerance>
<XPointTolerance>3.0</XPointTolerance>
<YPointTolerance>3.0</YPointTolerance>
<ZPointTolerance>2.0</ZPointTolerance>
<XAxisTolerance>2.0</XAxisTolerance>
<ZAxisTolerance>2.0</ZAxisTolerance>
</Tolerance>
</MiddleCommand>
<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>
这是我的 XML 文件的一部分。我已经能够从不同的命令类型中获取我的值并将它们写入 类。
我唯一做不到的是。
我想要一个带有命令的数组。这样我就知道哪个是第一个发生的顺序
所以最终数组应该看起来像这样:
Array_Commands = []
Array_Commands[0] = SetEndPoseToleranceType
Array_Commands[1] = MoveToType
显然我想遍历 XML 而不是手动创建数组。到目前为止,我没有关于这个问题的任何代码。
我希望有人知道一个简单的解决方案。
致以最诚挚的问候,谢谢大家!
见下文
import xml.etree.ElementTree as ET
xml = '''<r><MiddleCommand xsi:type="SetEndPoseToleranceType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CommandID>19827</CommandID>
<Tolerance>
<XPointTolerance>3.0</XPointTolerance>
<YPointTolerance>3.0</YPointTolerance>
<ZPointTolerance>2.0</ZPointTolerance>
<XAxisTolerance>2.0</XAxisTolerance>
<ZAxisTolerance>2.0</ZAxisTolerance>
</Tolerance>
</MiddleCommand>
<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></r>'''
root = ET.fromstring(xml)
cmds = [cmd.attrib['{http://www.w3.org/2001/XMLSchema-instance}type'] for cmd in root.findall('.//MiddleCommand')]
print(cmds)
输出
['SetEndPoseToleranceType', 'MoveToType']
之前有一个关于Elemttree解析的问题,第二天就得到了解答。我仍然不是 python 的专业人士,因此再次需要帮助。
<MiddleCommand xsi:type="SetEndPoseToleranceType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CommandID>19827</CommandID>
<Tolerance>
<XPointTolerance>3.0</XPointTolerance>
<YPointTolerance>3.0</YPointTolerance>
<ZPointTolerance>2.0</ZPointTolerance>
<XAxisTolerance>2.0</XAxisTolerance>
<ZAxisTolerance>2.0</ZAxisTolerance>
</Tolerance>
</MiddleCommand>
<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>
这是我的 XML 文件的一部分。我已经能够从不同的命令类型中获取我的值并将它们写入 类。 我唯一做不到的是。 我想要一个带有命令的数组。这样我就知道哪个是第一个发生的顺序 所以最终数组应该看起来像这样:
Array_Commands = []
Array_Commands[0] = SetEndPoseToleranceType
Array_Commands[1] = MoveToType
显然我想遍历 XML 而不是手动创建数组。到目前为止,我没有关于这个问题的任何代码。
我希望有人知道一个简单的解决方案。 致以最诚挚的问候,谢谢大家!
见下文
import xml.etree.ElementTree as ET
xml = '''<r><MiddleCommand xsi:type="SetEndPoseToleranceType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CommandID>19827</CommandID>
<Tolerance>
<XPointTolerance>3.0</XPointTolerance>
<YPointTolerance>3.0</YPointTolerance>
<ZPointTolerance>2.0</ZPointTolerance>
<XAxisTolerance>2.0</XAxisTolerance>
<ZAxisTolerance>2.0</ZAxisTolerance>
</Tolerance>
</MiddleCommand>
<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></r>'''
root = ET.fromstring(xml)
cmds = [cmd.attrib['{http://www.w3.org/2001/XMLSchema-instance}type'] for cmd in root.findall('.//MiddleCommand')]
print(cmds)
输出
['SetEndPoseToleranceType', 'MoveToType']