用于检查条件和输出标记的XML,PYTHON
我有一个xml文件,如下所示:用于检查条件和输出标记的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
<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(''))