python - 自 lxml v4.4 以来,etree.iterwalk 不再遍历处理指令
问题描述
在lxml v4.4 之前,lxml.etree.iterwalk遍历元素和处理指令:
使用以下代码:
from lxml import etree
XML = """<root>
<?page no="1"?>
<element key='value'>text</element>
<element>text</element>tail<?page no="2"?>
<empty-element xmlns="http://testns/"/>
</root>"""
context = etree.iterwalk(etree.XML(XML), events=("start",))
for action, elem in context:
if isinstance(elem, etree._ProcessingInstruction):
print(f"{action}: {elem.target} {elem.text}")
else:
print(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
现在忽略处理指令。为什么?
如何恢复以前的行为?
解决方案
推荐阅读
- python - 使用 Python 和正则表达式在 HTML 中查找表单
- c# - C# 错误:无法启动服务。该服务的一个实例已经在运行
- javascript - 使用来自先前 ajax 响应的值更新发送到 ajax 调用的变量
- c++ - 将子类对象作为异常抛出
- ruby-on-rails - 尝试从docusign rails示例将自定义字段添加到信封定义
- r - 无法运行插入符号 xgboost 分类
- sql - 给定 Y 列中的共享值,从同一列 X 中提取多个值
- javascript - 当我使用 NodeJS 启动时,我的 HTML 页面不一样
- java - FileOutputStream 仅在程序终止后写入文件的错误
- apache-spark - 属性错误:管道对象没有属性转换