python xml操作_python操作xml

xpath_test.html

  • NO.1
  • NO.2
  • NO.3
  • one
  • two

第二个标签

代码:

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)

# find只查找一个;获取第一个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()

# 通过 get(),可以获取结点属性的值

id = new_ele.get('id')

# 设置结点属性(属性,属性值)

title = new_ele.set('class','new_class')

# 显示节点的属性:key() 获取所有的属性:[key1,key2...]; items() 获取属性的键值对: [(key,value),(key,value)...]

new_ele.keys()

new_ele.items()

# 迭代自身和所有子结点的内容文本

all_text = new_ele.itertext()

for a in all_text:

print(a) # a是文本哦

# 写入文件 method 可以为 xml,html,text...

tree.write('xx.html',encoding='utf8',method='html')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值