码迷,mamicode.com
首页 > 其他好文 > 详细

xml中俩种解析方式

时间:2016-05-26 10:10:21      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

两种解析方式

技术分享

1、from xml.etree import ElementTree as ET

 利用ElementTree模块下的xml方法可以把一个字符串类型的东西转换成Element类,从而利用Element类下面的方法

xml(字符串)解析方式只能读不能写

from xml.etree import ElementTree as ET


# 打开文件,读取XML内容
str_xml = open(‘xo.xml‘, ‘r‘).read()

# 将字符串解析成xml特殊对象,root代指xml文件的根节点
root = ET.XML(str_xml)

 

from xml.etree import ElementTree as ET
a=open("first_xml","r",encoding="utf-8").read()
print(type(a))
b=ET.XML(a)                  其中b为根节点                                #利用xml方法可以的到一个Element类
print(type(b))

<class ‘str‘>                    输入一个字符串类型的转成Element类
<class ‘xml.etree.ElementTree.Element‘>

 

def XML(text, parser=None):
    """Parse XML document from string constant.

    This function can be used to embed "XML Literals" in Python code.

    *text* is a string containing XML data, *parser* is an
    optional parser instance, defaulting to the standard XMLParser.

    Returns an Element instance.

 Element下面的方法:

1、  iter所查看的东西)返回所匹配到的元素的迭代器     用于找到某一类节点并去循环

  Return an iterator containing all the matching elements.

2、   tag  返回节点的标签名

3、   attrib 返回标签的属性

4、  find()找到第一个匹配到的对象并返回   只能找儿子不能找孙子

5、    txet 获取标签的内容

2、parse(文件名)打开文件并解析,相比于xml少了打开文件那一步

from xml.etree import ElementTree as ET

# 直接解析xml文件
tree = ET.parse("xo.xml")

# 获取xml文件的根节点
root = tree.getroot()      通过getroot获取根节点

 

from xml.etree import ElementTree as ET
a=ET.parse("first_xml")
print(a.getroot(),type(a))                    #解析成ElementTree类的对象


<Element ‘data‘ at 0x00000033D062F958> <class ‘xml.etree.ElementTree.ElementTree‘>

 

def parse(source, parser=None):
    """Parse XML document into element tree.

    *source* is a filename or file object containing XML data,
    *parser* is an optional parser instance defaulting to XMLParser.

    Return an ElementTree instance.

    """
    tree = ElementTree()
    tree.parse(source, parser)
    return tree

 ElementTree下面的方法:

1、  getroot()     获取xml文件的根节点    与xml不同(通过xml()直接获取根节点,而parse()还的再通过getroot获取根节点)

2、  根节点.tag       获取节点的标签(这里与xml不同的是先利用getroot()得到根节点再tag)

3、  根节点.attrib    获取节点的属性(原理同上)

4、  text               获取标签的内容

5、  a.write(文件名)写入文件

from xml.etree import ElementTree as ET
a=ET.parse("first_xml")
b=a.getroot()
for i in b.iter("year"):
    new_year=int(i.text)+1
    i.text=str(new_year)
a.write("first_xml")

 6、  标签名.set("k1","k2")    为标签添加属性

7、  del 标签名 attrib["k1"]  删除标签的属性,如果标签名无属性,删除报错

3、创建一个XML文档

from xml.etree import ElementTree as ET
a=ET.Element("aaa")                 #创建根节点
b=ET.Element("bbb",{"k1":"k2"})    #创建子节点
c=ET.Element("ccc",{"k2":"k3"})
d=ET.Element("ddd",{"k3":"k4"})

a.append(b)
b.append(c)
c.append(d)
et = ET.ElementTree(a)      #生成文档对象
et.write("test.xml", encoding="utf-8", xml_declaration=True, short_empty_elements=False)

 

xml中俩种解析方式

标签:

原文地址:http://www.cnblogs.com/luxiaojun/p/5528966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!