python-3.x - lxml.etree.SerialisationError : IO_ENCODER ERROR when using cabby/libtaxii

标签 python-3.x lxml

我工作的公司有一个生产 TAXII 服务器(使用 STIX 1.1.1),它不能很好地与我们客户的一些客户端 TAXII 实现一起工作,所以我正在开发一个测试服务器来尝试解决一些问题的错误。为此,我一直在使用 cabby 从我们的 TAXII 服务器中提取信息,或者直接从我们的(非 TAXII)API 中提取 STIX/XML 文件并将它们直接插入测试服务器后端。我在生产和测试 TAXII 服务器上同时使用 cabby 时遇到的问题之一是 python lxml 库中的这个错误,它是 Cabby 的依赖项(这只是一个更大的堆栈跟踪的底部)

taxii_xml = response_message.to_xml(pretty_print=True)
  File "/usr/local/lib/python3.6/dist-packages/libtaxii/common.py", line 239, in to_xml
    return etree.tostring(self.to_etree(), pretty_print=pretty_print)
  File "src/lxml/etree.pyx", line 3435, in lxml.etree.tostring
  File "src/lxml/serializer.pxi", line 139, in lxml.etree._tostring
  File "src/lxml/serializer.pxi", line 199, in lxml.etree._raiseSerialisationError
lxml.etree.SerialisationError: IO_ENCODER

我一直在努力寻找 XML 中导致此错误的原因,但没有取得太大成功。从 XML 中过滤掉可能令人反感的字符的尝试已部分成功,但我也不太确定这就是导致此问题的原因。有没有人对 lxml 中这个错误的确切原因有很好的解释,我认为它与 XML 格式有关,但弄清楚格式错误的种类会非常有帮助

最佳答案

您是否碰巧将系统迁移到更新的系统?

在我们的例子中,一个旧系统有一个 lxml 4.5 的错误。

将其回滚到 2.3 解决了错误:

sudo su
pip uninstall lxml
apt-get install libxml2-dev libxslt1-dev
pip install lxml==2.3

关于python-3.x - lxml.etree.SerialisationError : IO_ENCODER ERROR when using cabby/libtaxii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60381999/

相关文章:

python - 从另一个包含字典键的数组构造值数组

python3 curses addstr in pad 未显示在迭代循环中

python - 在 lxml objectify 中获取有序列表

python - 搜索并替换: convert square brackets to xml tags

python - 在 lxml 中查找元素结束标记的行号

python - 如何使用python将嵌套子节点添加到xml文档中的父节点?

python - 为什么静态文件在生产服务器中给出404?

python-3.x - Anaconda Prompt 找到库,cmd -> Python 没有。 Python 只安装了 Anaconda 包,没有别的

python - 安装lxml后导入lxml失败

python - "invalid default value"带有 lxml 和 ATTLIST 标签