看着go xml package个,我找不到这样的可能性. Go只允许定义 struct 树,将它们映射到XML树,并使用xml.NewDecoder(myXmlString).Decode(myStruct)进行反序列化.

即使我定义了GO struct 所需树,我仍然不能使用XPath查询该树.

C#具有方便的函数SelectSingleNode,允许通过指定XPath从XML树中 Select 值,而无需在C#类中复制整个树 struct .

围棋也有类似的可能性吗? 如果不是,那么实现它的最简单方式是什么(可能重用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)
}

Go相关问答推荐

在字符串与字符串子切片上使用len进行位转移产生意外输出

GORM Find(&;Room)操作使用空数据而不是实际数据填充 struct

Go Colly-访问for循环中的URL

在GO中创建[]字符串类型的变量

理解Golang中的IOTA和常量

迭代字符串并用映射值替换原始字符串中的值的惯用方法

使用 OpenTelemetry 统一不同服务的范围

如何为ANTLR4目标Go调试监听器

如何忽略打印达到最大深度限制 go colly

如何以干净的方式在中间件中注入 repo 或服务?

GoLang: gocui 边框 colored颜色

使用 Go 解组 SOAP 消息

使用 os/exec 和在命令行执行之间的结果莫名其妙地不同

assert: mock: I don't know what to return because the method call was unexpected 在 Go 中编写单元测试时出错

转换朴素递归硬币问题时的记忆错误

使用go doc命令查看示例函数?

将 []float64 像素切片转换为图像

Golang BigInt 部门

测试包外文件时的 Golang 测试覆盖率

Go 1.18 泛型如何使用接口定义新的类型参数