最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python通過ElementTree操作XML獲取結(jié)點(diǎn)讀取屬性美化XML

 更新時(shí)間:2013年12月02日 09:22:57   作者:  
本文講解如何通過ElementTree解析XML,獲取兒子結(jié)點(diǎn)、插入兒子結(jié)點(diǎn)、操作屬性、美化XML

1.引入庫
需要用到3個(gè)類,ElementTree,Element以及建立子類的包裝類SubElement
from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement as SE

2.讀入并解析
tree = ElementTree(file=xmlfile)
root = tree.getroot()
讀入后,tree是ElementTree的類型,獲取xml根結(jié)點(diǎn)使用getroot()方法;

XML示例文件:

復(fù)制代碼 代碼如下:

<item sid='1712' name = '大CC'  >
<a id=1></a>
<a id=2></a>
</item>

3.獲取兒子結(jié)點(diǎn)
查找Element的所有子結(jié)點(diǎn):

復(fù)制代碼 代碼如下:

AArry = item.findall('a')
也可使用getchildren():
childs =  item.getchildren()
     for subItem in childs:
           print subItem.get('id')

4.插入兒子結(jié)點(diǎn)
方法一:

復(fù)制代碼 代碼如下:

 item = Element("item", {'sid' : '1713', 'name' : 'ityouhui'})
 root.append(item)

方法二:
復(fù)制代碼 代碼如下:

SE(root,'item',{'sid':'1713','name':'ityouhui'})

法一的好處是插入之后可以對item繼續(xù)操作。法二是寫法上簡單,其中SE就是SubElement,在引入處做了聲明;

5.操作屬性
獲取Element的某個(gè)屬性值(eg:獲取item的 name)

復(fù)制代碼 代碼如下:

print root.find('item/name').text
print item.get('name')

獲取Element所有屬性
復(fù)制代碼 代碼如下:

print item.items()       # [('sid', '1712'), ('name', '大CC')]
print item.attrib        # {'sid': '1712', 'name': '大CC'}

6.美化XML
在寫入之前,傳入root調(diào)用此函數(shù),寫入的XML文件格式整齊美觀:

復(fù)制代碼 代碼如下:

indent(root)
book.write(xmlfile,'utf-8')

復(fù)制代碼 代碼如下:

## Get pretty look
def indent( elem, level=0):
    i = "\n" + level*"  "
    if len(elem):
        if not elem.text or not elem.text.strip():
            elem.text = i + "  "
        for e in elem:
            indent(e, level+1)
        if not e.tail or not e.tail.strip():
            e.tail = i
    if level and (not elem.tail or not elem.tail.strip()):
        elem.tail = i
    return elem

相關(guān)文章

最新評論

蛟河市| 读书| 蒲江县| 利辛县| 铜山县| 关岭| 康马县| 远安县| 芜湖市| 云林县| 云阳县| 昔阳县| 凤凰县| 东丽区| 沁阳市| 富宁县| 湖州市| 济宁市| 丹凤县| 寿阳县| 秦安县| 河东区| 四会市| 仁寿县| 兰州市| 盐边县| 津市市| 白玉县| 淮滨县| 边坝县| 色达县| 新晃| 泸水县| 岳池县| 华容县| 祁连县| 永仁县| 保康县| 城步| 旬邑县| 本溪市|