【发布时间】: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