Python--xml.dom.minidom

作用:
  • DOM(Document Object Model),通过构建一个树结构来表示整个XML文档,一旦树被构建,可以通过DOM提供的接口来遍历树和提取相应的数据
Python版本:
函数定义:
  • minidom.parse('employees.xml') #读入整个xml文档,返回DOM对象
  • DOM对象
    • doc.documentElement #返回Root Element对象
  • nodes
    • element对象,非叶子节点,即存在子节点的节点
      • getElementsByTagName('employee') #根据子节点名称返回子节点(Element)列表,搜索了当前元素的所有子元素,包括所有层次的子元素
      • toxml()
      • childNodes属性,返回所有子节点,只返回第一层子节点
      • nodeValue属性,节点值
      • nodeName属性,节点名称
      • nodeType属性,节点类型,包含以下类型:ARRTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
      • getAttribute('id') #获取元素的属性值
    • textNode,最终的子节点
      • nodeName属性 #节点名称
      • nodeValue属性 #节点值
      • nodeType属性 #节点类型, 判断节点类型:if node.nodeType == node.ELEMENT_NODE
      • data属性,获取节点的文本内容
应用实例:
  • 实例:
  1. import xml.dom.minidom
  2. doc = xml.dom.minidom.parse('employees.xml') #载入xml文件
  3. root = doc.documentElement #获取根节点
  4. print root.nodeName #获得根节点的名称employees
  5. for node in root.childNodes:
  6.     if node.nodeType in (node.TEXT_NODE, node.CDATA_SECTION_NODE):
  7.         print 'text node: ', node.data
  8.     if node.nodeType in (node.ELEMENT_NODE):
  9.         if node.nodeName == 'employee':
  10.             print 'attribute id: ', node.getAttribute('id') #获取元素属性
  11. for node in root.getElementsByTagName('employee'): #搜索所有子节点
  12.     print 'id: ', node.getAttribute('id')
  13.     print 'name: ', node.getElementsByTagName('name')[0].childnodes[0].nodeName
  14.     print 'value: ', node.getElementsByTagName('name')[0].childnodes[0].data
  • xml样例(employees.xml)
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <employees>
  3.     <maxId>4</maxId>
  4.     <employee id='1'>
  5.         <name>joe</name>
  6.         <gender>male</gender>
  7.     </employee>
  8.     <employee id='2'>
  9.         <name>Jack</name>
  10.         <gender>male</gender>
  11.     </empoyee>
  12. </employees>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值