ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python操作xml

2020-11-08 21:01:22  阅读:190  来源: 互联网

标签:xml 结点 python 标签 tree ele 操作 new div


xpath_test.html

<html>
<body>
<head>xml Test</head>
<div id="content">
    <ul id="ul">
        <li>NO.1</li>
        <li>NO.2</li>
        <li>NO.3</li>
    </ul>
	<ul id="ul2">
        <li>one</li>
        <li>two</li>
    </ul>
    <div>
        <p>第二个标签</p>
    </div>
</div>
<div id="url">
    <a href="http:www.58.com" title="58">58</a>
    <a href="http:www.csdn.net" title="CSDN">CSDN</a>
    <a href="http:www.csdn.net222" title="CSDN">sssss</a>
</div>
</body>
</html>

代码:

import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element


# ----------ElementTree---------
# 从文件解析,返回elementTree类型
tree = ET.parse('xpath_test.html')

# 获取根结点 element
root = tree.getroot()
for x in root: # 遍历根节点的子节点
    print(x,x.tag,x.text)

# 获取第一个ul标签。.//ul是xpath写法
ele = tree.find('.//ul')
e = ele.find('.//li') # 获取ul的第一个li标签

# 从ele中删掉e这个结点
ele.remove(e)
# for e in ele:
#     if e.text == "NO.1":
#         ele.remove(e)

# 查找所有的div,list类型
tree.findall('.//div')

# 迭代,获取tree所有结点(无视层级)
it = tree.iter()
for i in it:  # 迭代所有结点
    print(i)

divs = tree.iterfind('.//div') # 迭代查找所有div标签,需要遍历
for div in divs:
    print(div,div.text,div.tag)

# ------------------Element-----------------

# xml = ET.XML(string) # 解析字符串 -> element
d = tree.find('.//div')

# 创建element. Element(标签,属性)
new_ele = Element('fff',{'id':'123'})

# .tail,设置此标签和下个标签之间的间隔,此处是换行符
new_ele.tail='\n'

# 设置标签的内容文本
new_ele.text = 'new_ele'

# 设置标签的属性
new_ele.attrib = {'id':'222','class':'333'}

# 设置标签名
new_ele.tag = 'Test'

# 给结点添加子节点
d.append(new_ele)

# 批量添加子结点
d.extend([new_ele,])

# 插入一个子节点,插入到索引1的位置
d.insert(1,new_ele)

# 这几个注释掉的方法和 ElementTree里面的一样
# new_ele.find('.//')
# new_ele.findall('.//')
# new_ele.iterfind('.//div')
# new_ele.iter()

# 获取结点的id属性的值
id = new_ele.get('id')

# 设置结点属性(属性,属性值)
title = new_ele.set('class','new_class')

# 显示所有的键:[key1,key2...]; 所有的键值对: [(key,value),(key,value)...]
new_ele.keys()
new_ele.items()

# 迭代自身和所有子结点的内容文本
all_text = new_ele.itertext()
for a in all_text:
    print(a)

# 写入文件 method:xml,html,text...
tree.write('xx.html',encoding='utf8',method='html')

标签:xml,结点,python,标签,tree,ele,操作,new,div
来源: https://www.cnblogs.com/wztshine/p/13945805.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有