我如何强制 Go 的标准 xml 解析器读取 DTD 实体

How can I force Go's standard xml parser to read DTD entities

我正在使用 go 的 encoding/xml 包来解析 XML 文件。解析文件时,这是我得到的错误:

XML syntax error on line 16: invalid character entity ü

但是 xml 文件引用了一个 dtd :

<!DOCTYPE dblp SYSTEM "dblp.dtd">

并且该 dtd 本身包含该实体的定义:

    <!ENTITY uuml    "&#252;" ><!-- small u, dieresis or umlaut mark -->

有没有办法强制 Go 的 xml 解析器解析 DTD,是我遗漏了什么地方还是我注定要使用第三方 xml 解析器?

可能不是您想听到的答案...

您可以使用 http://golang.org/pkg/encoding/xml/#DecoderEntity 字段。不幸的是,我不知道从 dtd 生成此类实体映射的自动方法。但这应该很容易从 dtd 中提取出来。如果 dtd 没有改变,这对 go generate 来说可能是个不错的任务。

如果实体列表是固定的(并且足够小),我会硬编码实体映射。