【问题标题】:lxml returns an empty list on DTD attributeslxml 返回 DTD 属性的空列表
【发布时间】:2014-01-18 23:52:48
【问题描述】:

我正在尝试获取 DTD 元素的属性以获取它们的默认值,但 attributes() 总是返回一个空列表。代码如下:

#!/usr/bin/python3 -BEOObbs
# coding=utf-8

import io, lxml.etree

xml = lxml.etree.parse(io.BytesIO(b'''<?xml
    version='1.1'
    encoding='utf-8'
?>
<!DOCTYPE root [
    <!ATTLIST test
        attr (A | B | C) 'B'
    >
    <!ELEMENT test (#PCDATA)>
    <!ELEMENT root (test)*>
]>
<root></root>'''))
element = xml.docinfo.internalDTD.elements()[0]
print(element.name)
print(element.attributes())

这是结果:

sworddragon@ubuntu:~/tmp$ ./test.py
test
[]

我想知道这里出了什么问题。

【问题讨论】:

  • 您解析字节数组而不是字符串的任何具体原因? (不确定这是否是问题)
  • 因为如果 OP 的输入是字符串,lxml 会抱怨 IOError: Error reading file

标签: python xml lxml dtd


【解决方案1】:

我已经为此开了一张票 (https://bugs.launchpad.net/lxml/+bug/1266171),他们已经确认这是一个错误,甚至将修复提交到 git 存储库的主树中,因此更改将在 lxml 的最终 3.3.0 版本中.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多