使用Python的xml.etree查找元素开始和结束字符偏移量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Python的xml.etree查找元素开始和结束字符偏移量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1638字,纯文字阅读大概需要3分钟。
内容图文
![使用Python的xml.etree查找元素开始和结束字符偏移量](/upload/InfoBanner/zyjiaocheng/799/43e0ade8ef6c4f9fb74669bfc9f1225f.jpg)
我有XML数据,看起来像:
<xml>
The captial of <place pid="1">South Africa</place> is <place>Pretoria</place>.
</xml>
我希望能够提取:
>目前在etree中提供的XML元素.
>文档的完整纯文本,在开始和结束标记之间.
>每个开始元素的纯文本中的位置,作为字符偏移量.
(3)是目前最重要的要求; etree提供(1)罚款.
我无法直接看到任何方法(3),但希望迭代文档树中的元素将返回许多可以重新组装的小字符串,从而提供(2)和(3).但是,请求根节点的.text仅返回根节点和第一个元素之间的文本,例如, “的首都 ”.
使用SAX执行(1)可能涉及实施已经多次写入的批次,例如, minidom和etree.使用lxml不是此代码所涉及的包的选项.有人可以帮忙吗?
解决方法:
iterparse()函数在xml.etree中可用:
import xml.etree.cElementTree as etree
for event, elem in etree.iterparse(file, events=('start', 'end')):
if event == 'start':
print(elem.tag) # use only tag name and attributes here
elif event == 'end':
# elem children elements, elem.text, elem.tail are available
if elem.text is not None and elem.tail is not None:
print(repr(elem.tail))
另一种选择是覆盖etree.TreeBuilder()的start(),data(),end()方法:
from xml.etree.ElementTree import XMLParser, TreeBuilder
class MyTreeBuilder(TreeBuilder):
def start(self, tag, attrs):
print("<%s>" % tag)
return TreeBuilder.start(self, tag, attrs)
def data(self, data):
print(repr(data))
TreeBuilder.data(self, data)
def end(self, tag):
return TreeBuilder.end(self, tag)
text = """<xml>
The captial of <place pid="1">South Africa</place> is <place>Pretoria</place>.
</xml>"""
# ElementTree.fromstring()
parser = XMLParser(target=MyTreeBuilder())
parser.feed(text)
root = parser.close() # return an ordinary Element
产量
<xml>
'\nThe captial of '
<place>
'South Africa'
' is '
<place>
'Pretoria'
'.\n'
内容总结
以上是互联网集市为您收集整理的使用Python的xml.etree查找元素开始和结束字符偏移量全部内容,希望文章能够帮你解决使用Python的xml.etree查找元素开始和结束字符偏移量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。