Python - 如何计算具有受限值的 XML 属性元素

标签 python xml minidom

我试图只计算代码属性大于或等于 10 的文件标签。以下是我的代码:-

from xml.dom.minidom import parse, parseString
import xml.dom.minidom

DOMTree = xml.dom.minidom.parse("param.xml")
group = DOMTree.documentElement

code_line_10=[0,1,2,3,4,5,6,7,8,9]

num_source_file = 0
for file in group.getElementsByTagName("file"):
    if file.hasAttribute("code"):
         attribute_value = file.getAttribute("code")
         if attribute_value not in code_line:
             num_source_file += 1
print(num_source_file)

这是我正在使用的 XML 文件的摘录:-

<?xml version="1.0"?><results>
<files>
<file name="cadasta-platform/cadasta/templates/allauth/account/password_set.html" blank="5" comment="0" code="11"  language="HTML" />
  <file name="cadasta-platform/cadasta/templates/allauth/openid/login.html" blank="7" comment="0" code="11"  language="HTML" />
  <file name="cadasta-platform/cadasta/resources/tests/test_views_mixins.py" blank="4" comment="0" code="11"  language="Python" />
  <file name="cadasta-platform/cadasta/core/tests/test_translations.py" blank="2" comment="0" code="11"  language="Python" />
  <file name="cadasta-platform/cadasta/organization/urls/default/users.py" blank="2" comment="0" code="11"  language="Python" />
  <file name="cadasta-platform/cadasta/core/node_modules/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_alerts.scss" blank="2" comment="1" code="11"  language="SASS" />
  <file name="cadasta-platform/cadasta/resources/tests/utils.py" blank="2" comment="0" code="11"  language="Python" />
  <file name="cadasta-platform/cadasta/core/static/js/rel_tenure.js" blank="2" comment="1" code="11"  language="Javascript" />
  <file name="cadasta-platform/cadasta/templates/party/relationship_resources_new.html" blank="3" comment="0" code="11"  language="HTML" />
  <file name="cadasta-platform/functional_tests/pages/AccountInactive.py" blank="6" comment="1" code="11"  language="Python" />
  <file name="cadasta-platform/cadasta/core/management/commands/loadsite.py" blank="3" comment="0" code="10"  language="Python" />
  <file name="cadasta-platform/cadasta/core/node_modules/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_hide-text.scss" blank="2" comment="9" code="10"  language="SASS" />
  <file name="cadasta-platform/functional_tests/projects/test_project.py" blank="13" comment="109" code="0"  language="Python" />

执行上述代码后,它将计算 xml 文档中的所有文件标记,包括我想要排除的标记。我做错了什么?

最佳答案

使用支持xpath的库,例如lxml ,那么你可以执行以下操作:

from lxml import etree
tree = etree.parse("param.xml")
print len(tree.getroot().xpath("//file[not(@code>0 and @code<10)]"))

关于Python - 如何计算具有受限值的 XML 属性元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45256259/

相关文章:

python - 解压未指定数量的变量

python - 赋值给数组,添加多份索引

android - 如何将 ConstraintLayout 的子项放置在屏幕外(以便稍后可以将它们翻译到屏幕上)?

javascript - SAPUI5 : Process Flow control is not working on different language setting

python - Python 中的嵌套 XML 标签

python - 使用 Python SDK 按前缀扫描 Bigtable

使用 asyncio 的 Python 简单套接字客户端/服务器

java - 安卓工作室 : cannot read packageName from manifest

python - 在x节点minidom xml python之后插入

python - python中的xml解析