Python中XML详解

最近发现自己一个很不好的毛病就是有的时候为了完成工作的任务,google下问题的解决方法就很快过去了。但是其实自己并不是特别理解或者理解得不是很透彻。

 

觉着这样太不好,没提高,于是开始从头开始趁着闲工夫理清楚一些问题:

 

python用Dom解析XML是我最近遇到的一个问题:

 

首先看下XML的格式:

DOM 的五个基本对象: DocumentNodeNodeListElementAttr

 

Python中队Document的解释是这样的:

A Document represents an entire XML document, including its constituent elements, attributes, processing instructions, comments etc. Remember that it inherits properties from Node .

 

代表整个XML文档,包含有元素,属性等

 

Nodelist是从Node继承而来的,表示一系列的Node

Node:All of the components of an XML document are subclasses of Node .

说的是所有的XML文档中的component都是Node的子类

它包含很多方法:http://docs.python.org/library/xml.dom.html?highlight=getelementsbytagname#dom-node-objects

Element:代表的是 XML 文档中的标签元素,继承于 Node

Attr :代表xml文档的属性,需要注意的是: Attribute value nodes on element nodes.

 

具体来看一个XML文档的解析:

下面只是XML文档的某个片段,整个文档包含几个system node

 

    <system platform="linux" name="server">
        <purpose>r</purpose>
        <system_type></system_type>
        <ip_address></ip_address>
        <userid>rt</userid>
        <password>y</password>
        <image_name></image_name>
        <instance_name></instance_name>
        <instance_comments>LRB BVT</instance_comments>
        <commands_on_boot>  </commands_on_boot>  
    </system>

 

现在我需要获取purpose的字段,怎么做么?

先看一个类中的方法:   

def getSystemPurpose(self,platform,name):
        rc =[]
        for nodes in self.dom.getElementsByTagName("system"):

#Document. getElementsByTagName ( tagName )
Search for all descendants (direct children, children’s children, etc.) with a particular element type name.
#document的 getElementsByTagName 将会返回所有的包含system tag 的node,此时返回时是一个nodes的集合。

 L= nodes.getElementsByTagName("purpose")      #读取所有的purpose nodes此时还是一个nodes的集合,对其进行遍历    
for node2 in L:

               
                title = ""
                for node3 in node2.childNodes:#nodes.chindNodes:获取所有的子节点,如果purpose有多个的话则依次取出其值。
                    if node3.nodeType == Node.TEXT_NODE:
                        title += node3.data
                print title

 

 

关于XML dom:

什么是 XML DOM?

XML DOM 是:

  • 用于 XML 的标准对象模型
  • 用于 XML 的标准编程接口
  • 中立于平台和语言
  • W3C 的标准

XML DOM 定义了所有 XML 元素的对象和属性 ,以及访问它们的方法(接口)

换句话说:

XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。

 

 

节点

根据 DOM,XML 文档中的每个成分都是一个节点

DOM 是这样规定的:

  • 整个文档是一个文档节点
  • 每个 XML 标签是一个元素节点
  • 包含在 XML 元素中的文本是文本节点
  • 每一个 XML 属性是一个属性节点
  • 注释属于注释节点
更多参考详见:http://www.w3school.com.cn/xmldom/dom_nodes.asp

我还是很懒,写东西实在不愿意写,这样不好。。。。。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惹不起的程咬金

来都来了,不赏点银子么

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值