在元素标签 Golang 中解组 xml 包含“:”
Unmarshall xml containing ":" inside element tag Golang
我已经开始解析 xml 文件。但是我在解组以下元素时遇到问题:
<Example>
<xhtml:p>
Some paragraph text
</xhtml:p>
<xhtml:div>
Some div text
</xhtml:div>
</Example>
我想提取 xhtml:p 和 xhtml:div
中的文本
我写了下面的代码
package main
import (
"fmt"
"encoding/xml"
)
type Example struct{
XMLName xml.Name `xml:"Example"`
Paragraphs []string `xml:"xhtml:p"`
Divs []string `xml:"xhtml:div"`
}
func main() {
x:= []byte(`
<Example>
<pr>hello pr</pr>
<xhtml:p>
Some paragraph text
</xhtml:p>
<xhtml:div>
Some div text
</xhtml:div>
</Example>
`)
var a Example
xml.Unmarshal(x,&a)
fmt.Println(a)
}
然而,当我打印 a
时,我得到了 Paragraphs
和 Divs
的空切片。
知道我做错了什么吗?
从结构标签中省略标签名称spaces,它将起作用:
type Example struct {
XMLName xml.Name `xml:"Example"`
Paragraphs []string `xml:"p"`
Divs []string `xml:"div"`
}
通过此更改,输出为(在 Go Playground 上尝试):
{{ Example} [
Some paragraph text
] [
Some div text
]}
如果您确实要指定名称space,则必须将其添加到带有 space 的结构标记中,而不是冒号:
type Example struct {
XMLName xml.Name `xml:"Example"`
Paragraphs []string `xml:"xhtml p"`
Divs []string `xml:"xhtml div"`
}
这将给出相同的输出。在 Go Playground.
上试试
参见相关问题:Parse Xml in GO for atttribute with ":" in tag
我已经开始解析 xml 文件。但是我在解组以下元素时遇到问题:
<Example>
<xhtml:p>
Some paragraph text
</xhtml:p>
<xhtml:div>
Some div text
</xhtml:div>
</Example>
我想提取 xhtml:p 和 xhtml:div
中的文本我写了下面的代码
package main
import (
"fmt"
"encoding/xml"
)
type Example struct{
XMLName xml.Name `xml:"Example"`
Paragraphs []string `xml:"xhtml:p"`
Divs []string `xml:"xhtml:div"`
}
func main() {
x:= []byte(`
<Example>
<pr>hello pr</pr>
<xhtml:p>
Some paragraph text
</xhtml:p>
<xhtml:div>
Some div text
</xhtml:div>
</Example>
`)
var a Example
xml.Unmarshal(x,&a)
fmt.Println(a)
}
然而,当我打印 a
时,我得到了 Paragraphs
和 Divs
的空切片。
知道我做错了什么吗?
从结构标签中省略标签名称spaces,它将起作用:
type Example struct {
XMLName xml.Name `xml:"Example"`
Paragraphs []string `xml:"p"`
Divs []string `xml:"div"`
}
通过此更改,输出为(在 Go Playground 上尝试):
{{ Example} [
Some paragraph text
] [
Some div text
]}
如果您确实要指定名称space,则必须将其添加到带有 space 的结构标记中,而不是冒号:
type Example struct {
XMLName xml.Name `xml:"Example"`
Paragraphs []string `xml:"xhtml p"`
Divs []string `xml:"xhtml div"`
}
这将给出相同的输出。在 Go Playground.
上试试参见相关问题:Parse Xml in GO for atttribute with ":" in tag