gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:13 25 4
gpt4 key购买 nike

我正在尝试使用 opdis 解析 XML 文件(由 lxml 提供) ;它在这一行失败:

<!ATTLIST operand type (target|src|dest) "">

上面写着:Attribute operand of type: invalid default value

问题来自""在标签的末尾。如果我用 "nothing" 之类的东西填充它,效果很好。 lxml只是不喜欢空字符串。

问题是我无法编辑 XML,它必须由 opdis 动态生成,所以我必须找到一种方法来制作 lxml忽略这个错误。

这是代码:

xml = subprocess.Popen(["opdis", "-f", "xml", "-E", "/home/ubuntu/workspace/testbinaries/bin/acc"], stdout=subprocess.PIPE).stdout.read();
tree = etree.fromstring(xml); #FAIL!

你有什么线索吗?

最佳答案

有问题的行

<!ATTLIST operand type (target|src|dest) "">

DTD attribute declaration operand 属性的。根据规范:

AttlistDecl    ::=      '<!ATTLIST' S Name AttDef* S? '>'
AttDef ::= S Name S AttType S DefaultDecl

空字符串对应于属性的默认值DefaultDecl(S对应于空格)。

default value应该定义为:

DefaultDecl    ::=      '#REQUIRED' | '#IMPLIED'
| (('#FIXED' S)? AttValue) [VC: Required Attribute]
[VC: Attribute Default Value Syntactically Correct]
[WFC: No < in Attribute Values]
[VC: Fixed Attribute Default]
[WFC: No External Entity References]

所以它不能是空字符串,lxml 正在正确地完成他的工作。

您必须向 opdis 邮件列表提交新问题。您还可以在代码中自行设置值 #REQUIRED#IMPLIED 来纠正问题:

xml  = subprocess.Popen(["opdis", "-f", "xml", "-E", "/home/ubuntu/workspace/testbinaries/bin/acc"], stdout=subprocess.PIPE).stdout.read();
xml = xml.replace("\"\"","#REQUIRED")
tree = etree.fromstring(xml); #OK

关于python - "invalid default value"带有 lxml 和 ATTLIST 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33034590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com