Python中XML详解
来源:互联网 发布:量化交易软件 编辑:程序博客网 时间:2024/06/09 21:37
最近发现自己一个很不好的毛病就是有的时候为了完成工作的任务,google下问题的解决方法就很快过去了。但是其实自己并不是特别理解或者理解得不是很透彻。
觉着这样太不好,没提高,于是开始从头开始趁着闲工夫理清楚一些问题:
python用Dom解析XML是我最近遇到的一个问题:
首先看下XML的格式:
DOM的五个基本对象:Document,Node,NodeList,Element和Attr。
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 属性是一个属性节点
- 注释属于注释节点
- Python中XML详解
- python中解析xml
- 详解在 Python 中解析并修改XML内容的方法
- 详解在 Python 中解析并修改XML内容的方法
- 详解在 Python 中解析并修改XML内容的方法
- Python中创建xml文件
- python中%符号详解
- Python中dict详解
- python中super()详解
- Python中dict详解
- Python中dict详解
- Python中dict详解
- python中%符号详解
- Python中dict详解
- Python中dict详解
- Python中dict详解
- Python中dict详解
- Python中dict详解
- iPhone读取和写入plist文件
- Linux 切换目录更方便: pushd,popd,dirs,cd
- windows 下时间变量
- 天气预报接口(中国天气网)
- iPhone中如何从Application Bundle中读取文件
- Python中XML详解
- 【POJ2192】Zipper(动态规划)
- Android native crash log分析
- .net 自动向用户发送邮件
- 自定义等待光标UIActivityIndicatorView及状态栏UIStatusBar
- ClassCastException深入分析
- as3 字符处理函数
- MFC中CTreeCtrl奇怪的SetCheck [OnInitDialog中SetCheck无效问题]
- java面试题:string,stringbuffer详解(通过代码说明)