我正在使用 go 的 encoding/xml
包来解析 XML 文件。解析文件时,这是我收到的错误:
XML syntax error on line 16: invalid character entity ü
但是 xml 文件引用了 dtd:
<!DOCTYPE dblp SYSTEM "dblp.dtd">
该 dtd 本身包含该实体的定义:
<!ENTITY uuml "ü" ><!-- small u, dieresis or umlaut mark -->
有没有办法强制 Go 的 xml 解析器解析 DTD,我是否遗漏了某些内容,或者我注定要使用第三方 xml 解析器?
最佳答案
可能不是您想听到的答案...
您可以使用http://golang.org/pkg/encoding/xml/#Decoder
的Entity
字段。不幸的是,我不知道从 dtd 生成此类实体映射的自动方法。但这应该可以直接从 dtd 中提取。如果 dtd 没有改变,这对于gogenerate
来说可能是一个不错的任务。
如果实体列表是固定的(并且足够小),我将对实体映射进行硬编码。
关于xml - 如何强制 Go 的标准 xml 解析器读取 DTD 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28107960/