节点序列化

本文介绍使用Python的lxml库处理XML文档的方法,包括不同格式化选项、编码方式及文本提取技巧。通过实例展示了如何生成整洁易读的XML输出,并处理特殊字符。
from lxml import etree

root = etree.XML('<root><a><b/></a></root>')
print(etree.tostring(root))
#输出:b'<root><a><b/></a></root>'

print(etree.tostring(root, xml_declaration=True))
#输出: <?xml version='1.0' encoding='ASCII'?>
#       <root><a><b/></a></root>

print(etree.tostring(root, encoding='iso-8859-1'))
#输出: <?xml version='1.0' encoding='iso-8859-1'?>
#       <root><a><b/></a></root>

print(etree.tostring(root, pretty_print=True))
'''输出:
    <root>
      <a>
        <b/>
      </a>
    </root>
'''

root = etree.XML('<html><head/><body><p>Hello<br/>World</p></body></html>')
print(etree.tostring(root))
#输出: b'<html><head/><body><p>Hello<br/>World</p></body></html>'

print(etree.tostring(root, method='xml'))
#输出: b'<html><head/><body><p>Hello<br/>World</p></body></html>'

print(etree.tostring(root, method='html'))
#输出: b'<html><head></head><body><p>Hello<br>World</p></body></html>'

print(etree.tostring(root, method='html', pretty_print=True))
'''输出: 
<html>
    <head></head>
    <body><p>Hello<br>World</p></body>
</html>
'''

print(etree.tostring(root, method='text'))
#输出: b'HelloWorld'

br = next(root.iter('br'))
br.tail = u'W\xf6rld'
etree.tostring(root, method='text')
#输出: 报错,因为编码默认是ascii,而不是unicode

print(etree.tostring(root, encoding='unicode', method='text'))
#输出:HelloWörld

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值