Go无法使用声明的实体解析正确的xml文件,不断收到此错误:
错误:第47行的XML语法错误:无效的字符实体&n;
该行<pos>&n;</pos>
和实体定义为<!ENTITY n "noun (common) (futsuumeishi)">
以下是Go中的程序:http://play.golang.org/p/94_60srVne
如果您创建了一个实体Decoder
并且弄乱了它的Entity
地图,则可以传入实体.我怀疑这个软件包实际上并没有解析DTD,只是来自于xml.go ; 我看到一条评论说它累积了调用者的实体,但没有任何东西本身设置条目d.Entity
.
(encoding/xml
即使因为有一个内置的共享 HTML实体映射,安全地提供它也会很棘手.为一个doc更新它会影响其他人的解析.)
使用自定义实体创建一个解码器的文书工作比普通实体更多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)
}
Run Code Online (Sandbox Code Playgroud)
这是一个Playground链接,其中包含Entity
技巧和一些输出代码,用于将对象显示为JSON.
归档时间: |
|
查看次数: |
2008 次 |
最近记录: |