如何使 lxml 的 iterparse 忽略无效的 XML 字符?

2023-12-23

我的 XML 包含无效字符。 LXML 的 XMLParser 对这些无效字符引发异常,但是当我使用以下命令创建 XMLParser 时恢复=真选项,它会忽略坏字符并且工作正常。

我的问题是如何为 lxml 的 iterparse 函数设置类似的标志?

再生产:

损坏的 XML (/tmp/z.xml):

<?xml version="1.0" encoding="utf-8"?>
<items>
    <item>
        <B>Bad characters:</B>
    </item>
</items>

NOTE:“坏字符:”字符串后面有两个 ASCII 字符 #31 (0x1F),我无法将其复制粘贴到此处。

XMLParser的解析错误:

fd = open('/tmp/z.xml')
parser = etree.XMLParser()
tree   = etree.parse(fd, parser)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lxml.etree.pyx", line 2576, in lxml.etree.parse (src/lxml/lxml.etree.c:22796)
  File "parser.pxi", line 1488, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:60390)
  File "parser.pxi", line 1518, in lxml.etree._parseFilelikeDocument (src/lxml/lxml.etree.c:60687)
  File "parser.pxi", line 1401, in lxml.etree._parseDocFromFilelike (src/lxml/lxml.etree.c:59658)
  File "parser.pxi", line 991, in lxml.etree._BaseParser._parseDocFromFilelike (src/lxml/lxml.etree.c:57303)
  File "parser.pxi", line 538, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:53512)
  File "parser.pxi", line 624, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:54372)
  File "parser.pxi", line 564, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:53770)
lxml.etree.XMLSyntaxError: PCDATA invalid Char value 31, line 4, column 21

忽略我设置的坏字符恢复=真并且工作正常:

import lxml.etree as etree
fd = open('/tmp/z.xml')
parser = etree.XMLParser(recover=True)
tree   = etree.parse(fd, parser)
etree.tostring(tree)

# OUTPUT:
<items>\n\t<item>\n\t\t<B>Bad characters:</B>\n\t</item>\n</items>'

使用 iterparse 我再次遇到同样的错误,但是如何让它忽略坏字符?

fd = open('/tmp/z.xml')
it = etree.iterparse(fd, events=("start", "end"))
for e in it: print e
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "iterparse.pxi", line 498, in lxml.etree.iterparse.__next__ (src/lxml/lxml.etree.c:73245)
  File "parser.pxi", line 564, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:53770)
lxml.etree.XMLSyntaxError: PCDATA invalid Char value 31, line 4, column 21

iterparse还接受recover争论:

it = etree.iterparse(fd, events=("start", "end"), recover=True)

(文档:lxml迭代解析 https://lxml.de/api/lxml.etree.iterparse-class.html )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 lxml 的 iterparse 忽略无效的 XML 字符? 的相关文章

  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • 希伯来语中的稀疏句子标记化错误

    尝试对希伯来语使用稀疏句子标记 import spacy nlp spacy load he doc nlp text sents list doc sents I get Warning no model found for he Onl
  • 如何使用显式引用转储 YAML?

    递归引用非常适合ruamel yaml or pyyaml ruamel yaml dump ruamel yaml load A A id001 id001 然而 它 显然 不适用于普通引用 ruamel yaml dump ruamel
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 了解 Python 中的酸洗

    我最近接到一项作业 需要以腌制形式放置一本字典 其中每个键引用一个列表 唯一的问题是我不知道腌制形式是什么 谁能给我指出一些好的资源的正确方向来帮助我学习这个概念 pickle 模块实现了一个基本但强大的算法 用于序列化和反序列化 Pyth
  • 当我在 Pandas 中使用 df.corr 时,我的一些列丢失了

    这是我的代码 import numpy as np import pandas as pd import seaborn as sns import matplotlib pyplot as plt data pd read csv dea
  • 登录网站并使用 python 请求下载文件

    我有一个带有 HTML 表单的网站 登录后 它会将我带到 start php 站点 然后将我重定向到overview php 我想从该服务器下载文件 当我单击 ZIP 文件的下载链接时 链接后面的地址是 getimage php path
  • Python Pandas 根据另一列的总计从另一个数据帧中选择值

    我下面有一个 DataFrame 但我需要根据取消和订单列从每个代码中选择行 假设代码 xxx 的阶数为 6 1 5 1 阶数为 11 我需要一种算法 可以选择满足总共 11 行的行 阶数为 6 5 如果没有行匹配 则选择最接近的 id 并
  • 与 while 循环一样,如何跳过 for 循环中的步骤?

    我尝试像 while 循环一样跳过 for 循环中的几个步骤 在 while 循环中 步骤根据特定条件进行调整 如下面的代码所示 i 0 while i lt 10 if i 3 i 5 else print i i i 1 result
  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • PyTorch DataLoader 对并行运行的批次使用相同的随机种子

    有一个bug https tanelp github io posts a bug that plagues thousands of open source ml projects 在 PyTorch Numpy 中 当并行加载批次时Da
  • Python 类型安全吗?

    根据维基百科 https en wikipedia org wiki Type system Type safety and memory safety 如果一种语言不允许违反类型系统规则的操作或转换 计算机科学家就认为该语言是 类型安全的
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • 以编程方式创建 FloatingActionButton(无需 xml)

    我很欣赏 Android 的 FloatingActionButton fab 功能 并希望在我的项目中的许多不同地方使用它们 现在 我有这样的东西 我有几个 xml 规范 除了 id 图标和 onclick 之外 所有这些规范都是相同的
  • Python 通过从现有 csv 文件中过滤选定的行来写入新的 csv 文件

    只是一个问题 我试图将 csv 文件中的选定行写入新的 csv 文件 但出现错误 我试图读取的 test csv 文件是这样的 两列 2013 9 1 2013 10 2 2013 11 3 2013 12 4 2014 1 5 2014
  • Python:高精度time.sleep

    你能告诉我如何在 Win32 和 Linux 上的 Python 2 6 中获得高精度睡眠函数吗 您可以在中使用浮点数sleep http docs python org library time html time sleep 该参数可以
  • 如何循环遍历字典列表并打印特定键的值?

    我是 Python 新手 有一个问题 我知道这是一个非常简单的问题 运行Python 3 4 我有一个需要迭代并提取特定信息的列表 以下是列表 称为部分 的示例 已截断 数千个项目 state DEAD id phwl type name
  • 如何在黑莓中解析xml文档?

    如何在 Blackberry 中解析 xml 文件 我可以有链接或示例代码或教程吗 我使用 SAX 来处理来自 Web api 的 XML 响应 它对我来说效果很好 查看 http developerlife com tutorials p
  • 长/宽数据到宽/长

    我有一个数据框 如下所示 import pandas as pd d decil 1 decil 1 decil 2 decil 2 decil 3 decil 3 decil kommune AA BB AA BB AA BB 2010

随机推荐

  • 从 MVC 项目访问类库?

    我在一个解决方案中有一个类库项目和 MVC 项目 我的类库具有命名空间 MyStuff Classes 我的 MVC 项目具有命名空间 MyStuff Web 我似乎无法从 mvc 项目访问我的类库 反之亦然 直接或使用 using 指令
  • iPhone 5 的弱光增强模式

    有谁能够在他们的自定义相机应用程序中使用 iPhone 5 的新低光增强模式吗 我尝试了以下代码 但发现没有任何区别 而本机相机应用程序显着提高了亮度 if captureManager backFacingCamera isLowLigh
  • 微服务架构中如何在微服务之间共享java模型

    我正在设计新应用程序的架构 我选择了微服务架构 在我的架构中 我注意到我有不同微服务使用的模型 我想知道是否有一种方法可以在微服务之间共享模型代码 而不是在每个微服务中编写它们 顺便说一句 我正在为我的应用程序使用 spring boot
  • PHP $_POST 数组用于未选中的复选框

    如果我有一个带有两个复选框的表单 它们具有与 name 属性相同的数组 名称 1 1 这些复选框都没有被勾选 我有什么方法可以知道它们存在于表单中吗 如果未选中这些字段 则不会通过 POST 数组发送这些字段 我问这个是因为这些名称值是动态
  • 更改 SQL Server 2005 中数据库图表的所有者

    我需要更改 SQL Server 2005 中数据库图表的所有者 目前它归我所有 domain username diagramName 我想将其更改为 dbo dbo diagramName 所有 我以为我可以使用 sp changeob
  • 如何从 php 脚本设置 cron 作业?

    我是 cron 工作的新手 我研究了一些有关 cron 作业的基础知识 我可以使用 cron 选项卡调用 php 通过在 etc crontab 中使用以下命令 10 root usr bin php var www PATH TO SCR
  • d3.js:将匿名函数作为参数传递给居中力?

    我正在制作一个交互式气泡图 并且正在研究将数据分为两组并移动到屏幕两侧的功能 我在模拟中使用了居中力 因为我认为它比使用forceX 和forceY 能提供更好 更一致的数据显示 但是 我在分割数据时遇到了麻烦 我的想法是 由于您可以将匿名
  • 背景颜色项目组合框 WPF

    我正在做一个 WPF 并有一个组合框 其中包含计算机上可用端口的列表 我想改变这些物品的颜色 我的组合框是这些
  • Grails - 仅供对象所有者访问

    我仍在开发我的第一个 Grails 应用程序 这次 我的问题是限制特定用户对某些操作的访问 假设用户添加一些对象 例如图书 我想仅向管理员和添加书籍的用户授予编辑书籍的权限 我目前正在使用 Acegi 插件 我知道该插件有更新版本 但我不确
  • 如何在 Swift 中编写多行字符串?

    如何将字符串拆分为多行 如下所示 var text String This is some text over multiple lines Swift 4 支持多行字符串文字 https github com apple swift ev
  • Akka actor 使用 Scala 进行单元测试

    我对 Scala 还很陌生 所以请保持温柔 在我当前正在构建的应用程序中 我正在使用 Akka Actor 并且我想编写一些单元测试 我遇到了这个为 Akka Actor 编写单元测试的官方文档 http doc akka io docs
  • 一起使用的 HTML 和 CSS 是否良好?

    最好的使用方法是什么
  • 这段代码真的可以对抗 SQL 注入吗? [复制]

    这个问题在这里已经有答案了 可能的重复 PHP 终极清洁 安全功能 https stackoverflow com questions 4223980 php the ultimate clean secure function 我在这里找
  • 无法在python3中安装boto

    我正在尝试从源代码 pypi 安装 boto 但无法使用 python 3 2 安装它 为什么会失败 c boto gt Python32 python exe setup py install Traceback most recent
  • 重铸 *void 函数参数

    我发布了一个问题here https stackoverflow com questions 8434884 nlopt with armadillo data早些时候 我想我可以回答是否有人可以帮助我解决以下问题 我有一个函数 doubl
  • 如何向 Unity 注册 AutoMapper 配置文件

    我有以下 AutoMapper 配置文件 public class AutoMapperBootstrap Profile protected override void Configure CreateMap
  • EProxy URI 在ecore 模型中无法解析

    在我的 Ecore 模型中 来自当前模型外部的所有类型都不会由其代理解析 返回对象的所有字段getType are null并且运行时只填写存储类型URI 这是我的模型的摘录
  • dplyr / R 重置累加和

    如果 当前 总和超过某个阈值 我想使用 dplyr 生成带有重置的累积总和 在下面 我想对 a 进行求和 library dplyr library tibble tib lt tibble t c 1 2 3 4 5 6 a c 2 3
  • 尝试根据一列中的值屏蔽 2D numpy 数组

    我有以下数组 6 105 2 8 09841881 6 105 4 9 34220351 6 105 6 9 97663435 6 1001 2 9 57108242 6 1001 4 12 22355794 6 1001 6
  • 如何使 lxml 的 iterparse 忽略无效的 XML 字符?

    我的 XML 包含无效字符 LXML 的 XMLParser 对这些无效字符引发异常 但是当我使用以下命令创建 XMLParser 时恢复 真选项 它会忽略坏字符并且工作正常 我的问题是如何为 lxml 的 iterparse 函数设置类似