dongqiang2024 2015-11-11 17:45
浏览 49
已采纳

解组具有xmlns名称空间的xml文档

I want to unmarshal an RDF document that looks likes:

<?xml version="1.0" encoding="WINDOWS-1252"?>
<rdf:RDF  xmlns:owl       = "http://www.w3.org/2002/07/owl#"
   xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"

   <!-- other xml element -->
</rdf:RDF>

I'm using this type to unmarchal in:

type wsdlDoc struct {
    XMLName xml.Name `xml:"rdf:RDF"`
    Name    string   `xml:"grounding:hasAtomicProcessGrounding"`
}

the snippet of code to do this:

// you should import "github.com/rogpeppe/go-charset/charset"
// and _ "github.com/rogpeppe/go-charset/data"
dec := xml.NewDecoder(file)
dec.CharsetReader = charset.NewReader
var v wsdlDoc
err = dec.Decode(&v)
if err != nil {
    panic(err)
}

When I run the code the panic print this error:

panic: expected element type <rdf:RDF> but have <RDF>

How to handle this case of unmarshaling?

  • 写回答

1条回答 默认 最新

  • doudaifu6083 2015-11-11 17:59
    关注

    Namespaces are denoted by their URL and separated from names by a space, so your struct should be more like

    type wsdlDoc struct {
        XMLName xml.Name `xml:"http://www.w3.org/1999/02/22-rdf-syntax-ns# RDF"`
        // ...
    }
    

    Playground example: http://play.golang.org/p/tYVm2h6cIm.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥15 统计大规模图中的完全子图问题
  • ¥15 使用LM2596制作降压电路,一个能运行,一个不能
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题
  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式