Go 编码/xml句柄未映射的元素
从Go 编码/xml句柄未映射的元素,go,Go,从 如果XML元素包含未匹配上述任何规则的子元素,并且结构具有带标记“any”的字段, 解组将子元素映射到该结构字段 我很难将XML信封的其余部分放入我的结构(以表明我有一个不完整的映射) 我知道您可以在mgo包的bson.M中使用这个方法,使用内联-但是看起来map[string]interface{}不是这里的答案 编辑: 在一些额外的游戏之后,我发现了我认为是一些额外的意外行为 切换到[]字符串作为类型开始接受输入,但没有键/值对: 我还计划采用encode/xml来解析html。我
- 如果XML元素包含未匹配上述任何规则的子元素,并且结构具有带标记“any”的字段, 解组将子元素映射到该结构字段
c
是具体的东西,所以它不应该使用”,任何“
,因此它应该有一个结构定义C本身包含一个任意标记的列表,因此它应该包含一个[]标记xml:'”,任意“
。。。现在要捕获标记本身,需要xml.Name来获取标记名和带有“innerxml”的内容
最后的结果是:
const xmlString = `<foo><a>1</a><b>2</b><c><c1>3</c1><c2>4</c2></c></foo>`
type Foo struct {
A int `xml:"a"`
B int `xml:"b"`
C Extra `xml:"c"`
}
type Extra struct {
Items []Tag `xml:",any"`
}
type Tag struct {
XMLName xml.Name
Content string `xml:",innerxml"`
}
对于HTML,有两种方法。对html使用xml解析器会很复杂
type Foo struct {
A int `xml:"a"`
B int `xml:"b"`
C struct {
Items []struct {
XMLName xml.Name
Content string `xml:",innerxml"`
} `xml:",any"`
} `xml:"c"`
}