我的 XML 看起来像这样:
<a>
<b>
<c>
<d>TEXT</d>
</c>
</b>
</a>
我知道如何通过 xml.Unmarshal 函数分离此代码,但是有没有办法仅在一定深度执行 Unmarshal 操作?例如,如果我想获取一个“TEXT”字符串并将其传递给另一个函数?我尝试提供一个子字符集对象,但它仍然尝试解析 XML 的其余部分...
我认为这就是您要问的(也请考虑您的评论)。
package main
import (
"encoding/xml"
"fmt"
)
func main() {
type Result struct {
Value string `xml:"b>c>d"`
}
v := Result{"none"}
data := `
<a>
<b>
<c>
<d>TEXT</d>
</c>
</b>
</a>
`
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Printf("Value: %v\n", v.Value)
}
Output:
Value: TEXT
UPDATE: lanZG 发表评论后
func main() {
type InnerResult struct {
Value string `xml:",innerxml"`
}
type Result struct {
B InnerResult `xml:"b"`
}
v := Result{InnerResult{"none"}}
data := `
<a>
<b>
<c>
<d>TEXT</d>
</c>
</b>
</a>
`
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Printf("Value: %v\n", v.B.Value)
}
Output:
Value:
<c>
<d>TEXT</d>
</c>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)