2 回答
TA贡献1865条经验 获得超7个赞
如果您创建了一个Decoder并弄乱了它的Entity地图,则可以传入实体。我怀疑这个包实际上并没有解析 DTD,只是通过浏览 xml.go;我看到一条评论说它为调用者积累了实体,但它本身没有在d.Entity.
(encoding/xml即使安全地提供它也很棘手,因为有一个内置的共享HTML 实体映射。为一个文档更新它会影响其他文档的解析。)
创建带有自定义实体的 Decoder 的文书工作比常规的xml.Unmarshal要多一些,但不会太多:
func main() {
jmd := JMdict{}
d := xml.NewDecoder(bytes.NewReader([]byte(str)))
d.Entity = map[string]string{
"n": "(noun)",
}
err := d.Decode(&jmd)
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Println(jmd)
}
这是一个带有技巧的Playground 链接Entity和一些将对象显示为 JSON 的输出代码。
TA贡献1853条经验 获得超9个赞
上一个答案是“正确”的答案,但我相信,根据您真正想要完成的任务,“快速”的答案是禁用 Strict。例如:
d := xml.NewDecoder(os.Stdin)
d.Strict = false
- 2 回答
- 0 关注
- 296 浏览
添加回答
举报