Python etree.iterwalk不';t浏览lxml v4.4之后的处理指令
在v4.4之前,浏览元素和处理说明: 使用以下代码:Python etree.iterwalk不';t浏览lxml v4.4之后的处理指令,python,lxml,processing-instruction,Python,Lxml,Processing Instruction,在v4.4之前,浏览元素和处理说明: 使用以下代码: 从lxml导入etree XML=”“” 文本 文本尾 """ context=etree.iterwalk(etree.XML(XML),events=(“开始”),和 对于行动,上下文中的元素: 如果存在(元素,etree.\u处理说明): 打印(f“{action}:{elem.target}{elem.text}”) 其他: 打印(f“{action}:{elem.tag}”) 我有: start: root start: page
从lxml导入etree
XML=”“”
文本
文本尾
"""
context=etree.iterwalk(etree.XML(XML),events=(“开始”),和
对于行动,上下文中的元素:
如果存在(元素,etree.\u处理说明):
打印(f“{action}:{elem.target}{elem.text}”)
其他:
打印(f“{action}:{elem.tag}”)
我有:
start: root
start: page no="1"
start: element
start: element
start: page no="2"
start: {http://testns/}empty-element
但自从lxml v4.4及更高版本以来,我已经:
start: root
start: element
start: element
start: {http://testns/}empty-element
处理指令现在被忽略。为什么?
如何恢复以前的行为?看起来像是
“pi”
现在被视为处理指令的单独事件类型,只需将其添加到事件=
列表中即可。它可以工作。你在哪里找到这些信息的?没有文档记录?我找不到任何相关文档,我查看了etree
源代码,并在对iterwalk()
的内部调用中看到了此新事件类型的使用。(还有一种“注释”事件类型,我认为也没有记录在案。)@jasonharper,你能发布一个答案让我接受吗?看起来“pi”
现在被认为是处理指令的一种单独的事件类型,只需将其添加到事件=
列表中即可。它可以工作。你在哪里找到这些信息的?没有文档记录?我找不到任何相关文档,我查看了etree
源代码,并在对iterwalk()
的内部调用中看到了此新事件类型的使用。(还有一种“评论”事件类型,我认为也没有记录在案。)@jasonharper,你能发布一个答案让我接受吗?