从MtConnect流解析XML时出现问题,不确定如何访问特定节点值

2024-06-16 10:22:16 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:我的特别问题是忽略名称空间,结合下面的答案提供了一个解决方案

试图解析和存储来自Mt Connect代理的XML响应,不确定如何访问节点中的特定数据段。尝试在覆盖项之后立即访问并隔离“100”

它不是作为属性出现的,我无法传递父节点来获取值。我相信这很简单,但我对xml和编程基本上是新手,不知道在哪里可以找到答案。感谢任何帮助或指导

源xml的片段:

<AxisFeedrate dataItemId="rovrd" timestamp="2021-03-22T19:26:22.643Z" sequence="7" name="RapidOverride" subType="OVERRIDE">100</AxisFeedrate>

代码:

import xml.sax

class GroupHandler(xml.sax.ContentHandler):

        def startElement(self, name, attrs):
            
            self.current = name
       
            if self.current == "AxisFeedrate":
                    print("-----AxisFeedrate-----")
                    print("dataItemId = {}".format(attrs['dataItemId']))
                    print("timestamp = {}".format(attrs['timestamp']))
                    print("sequence = {}".format(attrs['sequence']))
                    print("name = {}".format(attrs['name']))
                    print("subType = {}".format(attrs['subType']))


handler = GroupHandler()
parser = xml.sax.make_parser()
parser.setContentHandler(handler)
parser.parse('umc500_xml_sample.xml')'''     

结果:

-----AxisFeedrate-----
dataItemId = rovrd
timestamp = 2021-03-22T19:26:22.643Z
sequence = 7
name = RapidOverride
subType = OVERRIDE

Tags: 答案nameselfformatparser节点xmlattrs
1条回答
网友
1楼 · 发布于 2024-06-16 10:22:16

使用元素树

import xml.etree.ElementTree as ET

xml = '''<AxisFeedrate dataItemId="rovrd" timestamp="2021-03-22T19:26:22.643Z" sequence="7" name="RapidOverride" subType="OVERRIDE">100</AxisFeedrate>'''

root = ET.fromstring(xml)
print(root.text)

输出

100

相关问题 更多 >