python使用minidom简易解析xml

分类:python 标签:python, xml

使用xml.dom.minidom需要注意的一些问题:

1.使用parse()或createDocument()返回的为DOM对象;

2.使用DOM的documentElement属性可以获得Root Element;

3.DOM为树形结构,包含许多的nodes,其中element是node的一种,可以包含子elements,textNode也是node的一种,是最终的子节点;

4.每个node都有nodeName,nodeValue,nodeType属性,nodeValue是结点的值,只对textNode有效。对于textNode,想得到它的文本内容可以使用: .data属性。

5.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'

6.getElementsByTagName()可以根据名字来查找子elements;

7.childNodes返回所有的子Nodes,其中所有的文本均为textNode,包含元素间的‘\n\r’和空格均为textNode;

8.writexml() 时addindent=' '表示子元素的缩进,newl='\n'表示元素间的换行,encoding='utf-8'表示生成的xml的编码格式
<?xml version="1.0" encoding="utf-8"?>


下面是一段简易的获取天气代码:

#coding=utf-8

import urllib2
from xml.dom import minidom

#创建dom对象
city = "武汉"
url = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx/getWeatherbyCityName?theCityName=" + city
request = urllib2.Request(url);
response = urllib2.urlopen(request)
xmlstring = response.read();
dom = minidom.parseString(xmlstring)

#从dom对象中获取温度和天气
strings = dom.getElementsByTagName("string")

def getText(nodelist):
	rc = ""
	for node in nodelist:
		if node.nodeType == node.TEXT_NODE:
			rc = rc + node.data
	return rc

#今天的温度和天气
today_temperature = getText(strings[5].childNodes)
today_weather = getText(strings[6].childNodes)

#省份城市
province = getText(strings[0].childNodes)
city = getText(strings[1].childNodes)

weather = today_weather + " " + today_temperature

print province, city
print weather
你可能还会对下列文章感兴趣:

0条评论 你不想来一发么↓

    想说点什么呢?

    您需要登录您的Google账号才能进行评论。