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

用于检查条件和输出标记的XML,PYTHON,python,xml,Python,Xml,我有一个xml文件,如下所示: <records> <record> <device_serial_number>PAD203146024</device_serial_number> <device_serial_number_2>203146024</device_serial_number_2> <docsis_mac>6412695EB9BB&l

我有一个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>

PAD203146024
203146024
6412695EB9BB
PAD206024
20324
6412BB
我使用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>
预期输出
PAD203146024
203146024
6412695EB9BB
其中,上面的
record
是for循环中的
record
元素,如您的问题所示。只有当
'device\u serial\u number'
PAD
开头时,才会返回您的记录,如下所示:-

<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>

我使用ETree读取此xml文件-如果您已经显示代码添加了我的samplerecs=[ET.tostring(c)for c in record if c.find('device_serial_number')。text[:3]=='PAD']AttributeError:“非类型”对象没有属性“文本”嘿,你把它放在for循环中了吗?可能是你的一些
记录
元素没有
设备序列号
?如果是这样,我会检查一下,让我知道这是有效的,你能告诉我一种方法,我可以打印标签内的所有内容,即打印标记内的所有内容
<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>
   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(''))