pythony读取xml

简介:

xml样例:

 
  1. <?xml version="1.0"?> 
  2. <config> 
  3.         <backupdir id="100">/backup/</backupdir> 
  4.         <dbbackup id="1"> 
  5.                 <host>192.168.1.100</host> 
  6.                 <user>root</user> 
  7.                 <passwd>123456</passwd> 
  8.                 <dbname>lhp</dbname> 
  9.         </dbbackup> 
  10.         <dbbackup id="2"> 
  11.                 <host>192.168.1.101</host> 
  12.                 <user>root</user> 
  13.                 <passwd>123456</passwd> 
  14.                 <dbname>lhp_s2</dbname> 
  15.         </dbbackup> 
  16.         <webbackup id="1"> 
  17.                 <dir>/data/www</dir> 
  18.         </webbackup> 
  19. </config> 

首先导入模块,我使用的是minidom:

 
  1. from xml.dom import minidom 

然后加载xml文件:

 
  1. dom = minidom.parse('backup.xml'

现在我想读取<backupdir id="100">/backup/</backupdir>这一个元素中的ID的值和这一个元素的值

首先要找到这个元素,使用getElementsByTagName() 可以找到xml中某个元素:

 >>> dom.getElementsByTagName('backupdir')
[<DOM Element: backupdir at 0x2c7da88>]

这里返回的是一上列表,所以我们要指定第一个值:

 >>> dom.getElementsByTagName('backupdir')[0]
<DOM Element: backupdir at 0x2c7da88>

得到这个值我们就可以获取id:

>>> dom.getElementsByTagName('dbbackup')[0].getAttribute('id')
u'1'

然后我们看看bakupdir元素下面的节点有什么:

 >>> dom.getElementsByTagName('backupdir')[0].childNodes
[<DOM Text node "/backup/">]

和dbbackup对比一下:

 >>> dom.getElementsByTagName('dbbackup')[0].childNodes
[<DOM Text node "
    ">, <DOM Element: host at 0x2c7dd08>, <DOM Text node "
    ">, <DOM Element: user at 0x2c7de08>, <DOM Text node "
    ">, <DOM Element: passwd at 0x2c7df08>, <DOM Text node "
    ">, <DOM Element: dbname at 0x2c82048>, <DOM Text node "
  ">]

xml中换行也是一个内容,如果元素像backupdir那样,想获取值就很简单:

 >>> dom.getElementsByTagName('backupdir')[0].childNodes[0].data
u'/backup/'

如果要获取嵌套的元素内容就要使用循环,把空格排除就可以了,排除空格使用nodeType属性可以做到

nodeType是结点的类型,现在有以下几种:

'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'

用这条判断式就可以dom.getElementsByTagName('dbbackup')[0].nodeType == dom.getElementsByTagName('dbbackup')[0].ELEMENT_NODE

剩下的东西就跟上面说的是一样的了

本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/890287如需转载请自行联系原作者


lihuipeng

相关文章
|
10月前
|
XML 存储 Java
Python-docx编号列表解析:从XML迷宫到结构化数据的破局之道
本文深入解析了Word文档中自动编号的存储机制及解析难题,探讨了其在技术处理中的障碍,并通过三种实战方案对比,帮助开发者高效提取结构化数据。内容涵盖底层XML结构、常见问题解决方案及性能优化技巧,适用于合同条款、文档自动化处理等场景。
726 0
|
10月前
|
XML 存储 缓存
Python-docx编号列表解析:从XML迷宫到结构化数据的破局之道
Word文档中的自动编号功能虽便捷,却在技术处理时常成为障碍。本文深入解析Word文档的XML结构,揭示编号信息的存储机制,并提供多种基于Python的解决方案,涵盖跨平台解析、性能优化及固定模板处理,助力开发者突破编号解析难题,实现合同条款等内容的结构化提取与处理。
451 0
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
480 1
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
363 1
|
存储 Python
Python:利用XML-RPC实现简单的远端过程调用
Python:利用XML-RPC实现简单的远端过程调用
136 1
|
XML 数据格式 Python
python 解析xml遇到xml.etree.ElementTree.ParseError: not well-formed (invalid token): |4-8
python 解析xml遇到xml.etree.ElementTree.ParseError: not well-formed (invalid token): |4-8
|
XML JavaScript API
30天拿下Python之使用xml
30天拿下Python之使用xml
131 0
|
XML JavaScript 关系型数据库
Python XML 解析
Python XML 解析
|
XML 数据格式 Python
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
python挑出训练集里图片对应的xml文件,方便统计标签框的类别与数目_python 统计voc2007xml中某一类别框个数(1)
|
XML 数据格式 Python
【Python】已解决:xml.parsers.expat.ExpatError: no element found: Line 1, column 0
【Python】已解决:xml.parsers.expat.ExpatError: no element found: Line 1, column 0
768 0

推荐镜像

更多