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

相关文章
|
6月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
80 0
|
26天前
|
存储 Python
Python:利用XML-RPC实现简单的远端过程调用
Python:利用XML-RPC实现简单的远端过程调用
10 1
|
2月前
|
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
|
6月前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
96 1
|
2月前
|
XML JavaScript API
30天拿下Python之使用xml
30天拿下Python之使用xml
25 0
|
5月前
|
XML JavaScript 关系型数据库
Python XML 解析
Python XML 解析
|
4月前
|
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
88 0
|
4月前
|
XML JavaScript 数据格式
【Python】已解决:(Python xml库 import xml.dom.minidom导包报错)‘No module named dom’
【Python】已解决:(Python xml库 import xml.dom.minidom导包报错)‘No module named dom’
75 0
|
4月前
|
XML 数据格式 Python
【Python】已解决:FileNotFoundError: [Errno 2] No such file or directory: ‘./1.xml’
【Python】已解决:FileNotFoundError: [Errno 2] No such file or directory: ‘./1.xml’
114 0
|
5月前
|
XML 存储 JavaScript
python读取xml文件详细讲解
python读取xml文件详细讲解
53 0