Python中文
首页
教程
问答
标签
搜索
登录
注册
如何在使用Python元素解析XML时检查条件
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在尝试使用ElementTree解析XML并获取所有必需的字段。你知道吗</p> <blockquote> <p>Problem : My list is getting empty , condition that i am trying is- If reference('type') == 'cve' then i want to get 'id' text in reference tag.</p> </blockquote> <p>有人能建议/纠正我获得所需的领域吗?你知道吗</p> <p>我的实际代码如下:</p> <pre><code>import xml.etree.ElementTree as ET file_name = "updateinfo.xml" parser = ET.XMLParser(encoding="utf-8") tree = ET.parse(file_name, parser=parser) tree_toString = (ET.tostring(tree.getroot())) for ele in tree.findall('update'): cveList = [ ele.find('references/reference').get('id') if ele.find('references/reference').get('type') == 'cve' else None for cve in ele.find('references/reference')] print cveList </code></pre> <p>我的XML结构如下:</p> <pre><code><?xml version="1.0" encoding="UTF-8"?> <updates> <update status="final" from="release-engineering@redhat.com" version="4" type="enhancement" > <id>RHEA-2017:2259</id> <issued date="2017-08-01 05:59:34 UTC" /> <title>new packages: usbguard</title> <release>0</release> <rights>Copyright 2017 Red Hat Inc</rights> <pushcount>4</pushcount> <updated date="2017-08-01 05:59:34 UTC" /> <references> <reference href="https://access.redhat.com/errata/RHEA-2017:2259" type="self" id="RHEA-2017:2259" title="RHEA-2017:2259" /> <reference href="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.4_Release_Notes/index.html" type="other" id="ref_0" title="other_reference_0" /> </references> <pkglist> <collection short="" > <name>rhel-7-server-rpms__7_DOT_4__x86_64</name> <package src="usbguard-0.7.0-3.el7.src.rpm" name="usbguard" epoch="0" version="0.7.0" release="3.el7" arch="i686" > <filename>usbguard-0.7.0-3.el7.i686.rpm</filename> <sum type="sha256" >efd5ca6dd3df02e8537cf45cef48508bf023f568a98ce9f28e9baf77c5caac6c</sum> </package> <package src="usbguard-0.7.0-3.el7.src.rpm" name="usbguard" epoch="0" version="0.7.0" release="3.el7" arch="x86_64" > <filename>usbguard-0.7.0-3.el7.x86_64.rpm</filename> <sum type="sha256" >3f72768880085d6bfff37636d3a8eb54184e5619353b5efbefd5738e74bdfa08</sum> </package> </collection> </pkglist> </update> <update status="final" from="security@redhat.com" version="1" type="bugfix" > <id>RHBA-2014:0722</id> <issued date="2014-06-10 00:00:00" /> <title>kexec-tools bug fix update</title> <rights>Copyright 2014 Red Hat Inc</rights> <pushcount>1</pushcount> <updated date="2014-06-10 00:00:00" /> <references> <reference href="https://rhn.redhat.com/errata/RHBA-2014-0722.html" type="self" title="RHBA-2014:0722" /> </references> <pkglist> <collection short="" > <name>rhel-7-server-rpms__7_DOT_4__x86_64</name> <package src="kexec-tools-2.0.4-32.el7_0.1.src.rpm" name="kexec-tools" epoch="0" version="2.0.4" release="32.el7_0.1" arch="x86_64" > <filename>kexec-tools-2.0.4-32.el7_0.1.x86_64.rpm</filename> <sum type="sha256" >8e214681104e4ba73726e0ce11d21b963ec0390fd70458d439ddc72372082034</sum> </package> </collection> </pkglist> </update> <update status="final" from="release-engineering@redhat.com" version="4" type="security" > <id>RHSA-2017:2831</id> <issued date="2017-09-28 18:56:55 UTC" /> <title>Critical: firefox security update</title> <release>0</release> <rights>Copyright 2017 Red Hat Inc</rights> <severity>Critical</severity> <pushcount>4</pushcount> <updated date="2017-09-28 18:56:56 UTC" /> <references> <reference href="https://access.redhat.com/errata/RHSA-2017:2831" type="self" id="RHSA-2017:2831" title="RHSA-2017:2831" /> <reference href="https://bugzilla.redhat.com/show_bug.cgi?id=1496649" type="bugzilla" id="1496649" title="CVE-2017-7793 Mozilla: Use-after-free with Fetch API (MFSA 2017-22)" /> <reference href="https://bugzilla.redhat.com/show_bug.cgi?id=1496651" type="bugzilla" id="1496651" title="CVE-2017-7810 Mozilla: Memory safety bugs fixed in Firefox 56 and Firefox ESR 52.4 (MFSA 2017-22)" /> <reference href="https://bugzilla.redhat.com/show_bug.cgi?id=1496652" type="bugzilla" id="1496652" title="CVE-2017-7814 Mozilla: Blob and data URLs bypass phishing and malware protection warnings (MFSA 2017-22)" /> <reference href="https://bugzilla.redhat.com/show_bug.cgi?id=1496653" type="bugzilla" id="1496653" title="CVE-2017-7818 Mozilla: Use-after-free during ARIA array manipulation (MFSA 2017-22)" /> <reference href="https://bugzilla.redhat.com/show_bug.cgi?id=1496654" type="bugzilla" id="1496654" title="CVE-2017-7819 Mozilla: Use-after-free while resizing images in design mode (MFSA 2017-22)" /> <reference href="https://bugzilla.redhat.com/show_bug.cgi?id=1496655" type="bugzilla" id="1496655" title="CVE-2017-7823 Mozilla: CSP sandbox directive did not create a unique origin (MFSA 2017-22)" /> <reference href="https://bugzilla.redhat.com/show_bug.cgi?id=1496656" type="bugzilla" id="1496656" title="CVE-2017-7824 Mozilla: Buffer overflow when drawing and validating elements with ANGLE (MFSA 2017-22)" /> <reference href="https://www.redhat.com/security/data/cve/CVE-2017-7793.html" type="cve" id="CVE-2017-7793" title="CVE-2017-7793" /> <reference href="https://www.redhat.com/security/data/cve/CVE-2017-7810.html" type="cve" id="CVE-2017-7810" title="CVE-2017-7810" /> <reference href="https://www.redhat.com/security/data/cve/CVE-2017-7814.html" type="cve" id="CVE-2017-7814" title="CVE-2017-7814" /> <reference href="https://www.redhat.com/security/data/cve/CVE-2017-7818.html" type="cve" id="CVE-2017-7818" title="CVE-2017-7818" /> <reference href="https://www.redhat.com/security/data/cve/CVE-2017-7819.html" type="cve" id="CVE-2017-7819" title="CVE-2017-7819" /> <reference href="https://www.redhat.com/security/data/cve/CVE-2017-7823.html" type="cve" id="CVE-2017-7823" title="CVE-2017-7823" /> <reference href="https://www.redhat.com/security/data/cve/CVE-2017-7824.html" type="cve" id="CVE-2017-7824" title="CVE-2017-7824" /> <reference href="https://access.redhat.com/security/updates/classification/#critical" type="other" id="classification" title="critical" /> <reference href="https://www.mozilla.org/en-US/security/advisories/mfsa2017-22/" type="other" id="ref_0" title="other_reference_0" /> </references> <pkglist> <collection short="" > <name>rhel-7-server-rpms__7_DOT_4__x86_64</name> <package src="firefox-52.4.0-1.el7_4.src.rpm" name="firefox" epoch="0" version="52.4.0" release="1.el7_4" arch="x86_64" > <filename>firefox-52.4.0-1.el7_4.x86_64.rpm</filename> <sum type="sha256" >7b81b37bf969534bee0152bc13db56ae410eee06120a78d8da261c10c73c0514</sum> </package> </collection> </pkglist> </update> <update status="final" from="release-engineering@redhat.com" version="2" type="bugfix" > <id>RHBA-2016:2423</id> <issued date="2016-11-03 06:09:21 UTC" /> <title>oscap-anaconda-addon bug fix update</title> <release>0</release> <rights>Copyright 2016 Red Hat Inc</rights> <severity>None</severity> <pushcount>2</pushcount> <updated date="2016-11-03 06:10:44 UTC" /> <references> <reference href="https://access.redhat.com/errata/RHBA-2016:2423" type="self" id="RHBA-2016:2423" title="RHBA-2016:2423" /> <reference href="https://bugzilla.redhat.com/show_bug.cgi?id=1269211" type="bugzilla" id="1269211" title="could move security section down to bottom since it's not as important as network spoke" /> </references> <pkglist> <collection short="" > <name>rhel-7-server-rpms__7_DOT_4__x86_64</name> <package src="oscap-anaconda-addon-0.7-12.el7.src.rpm" name="oscap-anaconda-addon" epoch="0" version="0.7" release="12.el7" arch="noarch" > <filename>oscap-anaconda-addon-0.7-12.el7.noarch.rpm</filename> <sum type="sha256" >507fbf46ddaed0bb4087d3ef2b31db235473f3be36aaa9ed7df43279ed7e2f07</sum> </package> </collection> </pkglist> </update> </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>使用<code>ele.find(...).get(‘id’)</code>是不对的-使用<code>cve.find(‘id’)</code>,而不是使用<code>ele.find(...).get(‘type’)</code>使用<code>cve.get(‘type’)</code></p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何提高Djang的410误差
2 回答
如何提高doc2vec模型中两个文档(句子)的余弦相似度?
1 回答
如何提高Docker的日志限制?|[输出已剪裁,达到日志限制100KiB/s]
8 回答
如何提高DQN的性能?
8 回答
如何提高EasyOCR的准确性/预测?
10 回答
如何提高Euler#39项目解决方案的效率?
1 回答
如何提高F1成绩进行分类
7 回答
如何提高FaceNet的准确性
1 回答
如何提高fft处理的精度?
9 回答
如何提高Fibonacci实现对大n的精度?
4 回答
如何提高Flask与psycopg2的连接时间
10 回答
如何提高FosterCauer变换的scipy.signal.invres()的数值稳定性?
4 回答
如何提高gae查询的性能?
7 回答
如何提高GANs用于时间序列预测/异常检测的结果
7 回答
如何提高gevent和tornado组合的性能?
8 回答
如何提高googleappengin请求日志的吞吐量
3 回答
如何提高googlevision文本识别的准确性
5 回答
如何提高groupby/apply效率
9 回答
如何提高Gunicorn中的请求率
5 回答
如何提高G中的文件编码转换
4 回答