Python中XML详解

来源:互联网 发布:量化交易软件 编辑:程序博客网 时间:2024/06/09 21:37

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

 

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

 

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

 

首先看下XML的格式:

DOM的五个基本对象:DocumentNodeNodeListElementAttr

 

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

A Document represents an entire XML document, including its constituentelements, attributes, processing instructions, comments etc. Remember that itinherits 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 onelement 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 aparticular 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

我还是很懒,写东西实在不愿意写,这样不好。。。。。
原创粉丝点击