加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Go中使用XPath从XML中获取值

发布时间:2020-12-16 07:56:43 所属栏目:百科 来源:网络整理
导读:看着 go xml package我找不到这样的可能性. Go只允许定义结构树,将它们映射到XML树并使用xml.NewDecoder(myXmlString).Decode(myStruct)进行反序列化. 即使我定义了所需的Go结构树,我仍然无法使用XPath查询该树. C#具有方便的功能SelectSingleNode,允许通过
看着 go xml package我找不到这样的可能性.
Go只允许定义结构树,将它们映射到XML树并使用xml.NewDecoder(myXmlString).Decode(myStruct)进行反序列化.

即使我定义了所需的Go结构树,我仍然无法使用XPath查询该树.

C#具有方便的功能SelectSingleNode,允许通过指定XPath而不复制C#类中的整个树结构从XML树中选择值.

Go有类似的可能吗?
如果不是那么最简单的方法来实现它(可能重用xml包)?

即使不是xpath,您可以使用本机 go xml encoder软件包从XML中读取值.您将使用xml.Unmarshal()函数. Here是一个去玩的例子.
package main

import "fmt"
import "encoding/xml"

func main() {
    type People struct {
        Names []string `xml:"Person>FullName"`
    }

    data := `
        <People>
            <Person>
                <FullName>Jerome Anthony</FullName>
            </Person>
            <Person>
                <FullName>Christina</FullName>
            </Person>
        </People>
    `

    v := People{Names: []string{}}
    err := xml.Unmarshal([]byte(data),&v)
    if err != nil {
        fmt.Printf("error: %v",err)
        return
    }
    fmt.Printf("Names of people: %q",v)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读