转到 XML 错误 : invalid character entity

标签 go

Go 无法解析带有已声明实体的正确 xml 文件,不断出现此错误:

error: XML syntax error on line 47: invalid character entity &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 安全地提供它会很棘手,甚至,因为有一个内置的 shared HTML 实体映射。为一个文档更新它会影响其他人的解析。)

与常规 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 link使用 Entity 技巧和一些输出代码将对象显示为 JSON。

关于转到 XML 错误 : invalid character entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662417/

相关文章:

unit-testing - Golang 接口(interface)和模拟

unit-testing - 如何修复测试用例中的 "missing type in composite literal"

go - ldap搜索过滤器以检查特定域下是否存在任何用户

html - 如何将文件从 html 选择器发送到 golang apis?

go - .(type) 在 go 中如何工作

if-statement - 在单个if语句中进行nil检查和错误检查

go - 对同一存储库中的多个包使用公共(public)库

http - 重定向对静态文件的请求

go - Go:如何使用gqlgen graphql实现禁用CORS?

http - 获取 HTTP 响应的所有 header 并在下一个 HTTP 请求中发回