如何使用 python 仅解析来自 XML 的特定信息

How to parse only certain information from XML using python

我有一个简单的小问题,我只想要解析标签的一小部分。 所以当“正在解析硬件版本时,终端输出是:”TREE M-5TX IP67 1.00“ 但我只想要 1.00 而不是“TREE M-5TX IP67”部分。

有人知道怎么做吗? 请给我举个例子,我是初学者,因此任何帮助都会很好。 如果我没有正确使用某些术语,我很抱歉

# open webpage and read values
xml_str = urllib.request.urlopen(url_str).read()

# Parses XML doc to String for Terminal output
xmldoc = minidom.parseString(xml_str)

# prints the order_number from the xmldoc
order_number = xmldoc.getElementsByTagName('order_number')
ord_nmr = order_number[0].firstChild.nodeValue

# prints the firmware_version from the xmldoc
firmware_version = xmldoc.getElementsByTagName('firmware_version')
frm_ver = firmware_version[0].firstChild.nodeValue

# prints the hardware_version from the xmldoc
hardware_version = xmldoc.getElementsByTagName('hardware_version')
hrd_ver = hardware_version[0].firstChild.nodeValue

# prints the mac_address from the xmldoc
mac_address = xmldoc.getElementsByTagName('mac_address')
mac_addr = mac_address[0].firstChild.nodeValue

print("Current device information: ")
print("Order-number: ",ord_nmr, "Software-version: ",frm_ver, "Hardware version: ",hrd_ver, "MAC address: ",mac_addr)

终端输出如下所示:

订单号:58183 软件版本:1.1.0(内部版本:1)硬件版本:TREE M-5TX IP67 1.00 MAC 地址:00:0F:9E:F3:F8:A0

您没有给出区分所需部分(在本例中为“1.00”)与其余部分的规则或规范,您应该查看 'hardware_version' 的所有其他可能值并定义一般规则。

如果没有,我将假设您想要的部分与其余部分由白色space(一个或多个 space 或制表符)分隔开,并且它是最后一块非 space 文本。有了这样的规则,就可以很容易地拆分你所拥有的并检索最后一个元素:

# prints the hardware_version from the xmldoc
hardware_version = xmldoc.getElementsByTagName('hardware_version')
hrd_ver = hardware_version[0].firstChild.nodeValue
v = hrd_ver.split()[-1]

v 将为“1.00”。 split 函数默认拆分白色 space 和 returns 字符串数组,我们只选择最后一个。