用于检查条件和输出标记的XML,PYTHON

2024-09-29 19:24:16 发布

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

我有一个xml文件,如下所示:

   <records>
   <record>
        <device_serial_number>PAD203146024</device_serial_number>
        <device_serial_number_2>203146024</device_serial_number_2>
        <docsis_mac>6412695EB9BB</docsis_mac>
   </record>
   <record>
        <device_serial_number>PAD206024</device_serial_number>
        <device_serial_number_2>20324</device_serial_number_2>
        <docsis_mac>6412BB</docsis_mac>
   </record>
   </records>

我在python中使用ETree阅读了这个xml文件,效果很好,现在我想检查标记是否有以“PAD”开头的文本,如果它有,则输出如下:

    Expected output
    <record>
    <device_serial_number>PAD203146024</device_serial_number>
    <device_serial_number_2>203146024</device_serial_number_2>
    <docsis_mac>6412695EB9BB</docsis_mac>
    </record>

Tags: 文件标记numberdevicemacserialxmlrecord
1条回答
网友
1楼 · 发布于 2024-09-29 19:24:16
import xml.etree.ElementTree as ET

recs=[ET.tostring(c) for c in record if c.find('device_serial_number').text[:3]=='PAD']
for rec in recs:
   print(rec)

其中,上面的record是for循环中的record元素,如您的问题所示。只有当'device_serial_number'PAD开头时,才会返回您的记录below:- 你知道吗

<record>
        <device_serial_number>PAD203146024</device_serial_number>
        <device_serial_number_2>203146024</device_serial_number_2>
        <docsis_mac>6412695EB9BB</docsis_mac>
   </record>

<record>
        <device_serial_number>PAD206024</device_serial_number>
        <device_serial_number_2>20324</device_serial_number_2>
        <docsis_mac>6412BB</docsis_mac>
   </record>

如果任何记录元素都没有device_serial_number作为子元素,那么我将使用以下方法:

   from xml.etree import ElementTree as ET
   from xml.dom.minidom import parseString

   tree = ET.parse('C:\\Use\\CO.xml')
   root = tree.getroot()
   for record in root.findall('records'):
       recs=[c for c in t if c.find('device_serial_number')!=None and c.find('device_serial_number').text[:3]=='PAD']
       for rec in recs:
          print(parseString(ET.tostring(rec)).toprettyxml(''))

相关问题 更多 >

    热门问题