gpt4 book ai didi

xml - 使用 xmlpath.v2 golang 获取节点的值

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:29 27 4
gpt4 key购买 nike

我正在使用 gopkg.in/xmlpath.v2 解析 xml 文档,我发现了一个麻烦......我可以毫无问题地从单个节点获取信息,或者获取迭代器并循环遍历其项目以获取其信息。但是,我被阻止的情况是当我尝试从我正在迭代的同一节点获取信息时。我认为一个例子会很有启发性。
这是 XML:

<Warnings>
<Warning Type="309" ShortText="Unfulfilled Paid Service 1">Unable to book seat 1</Warning>
<Warning Type="309" ShortText="Unfulfilled Paid Service 2">Unable to book seat 2</Warning>
<Warning Type="309" ShortText="Unfulfilled Paid Service 3">Unable to book seat 3</Warning>
</Warnings>

这些是我使用的 xpath:

xpath := xPathWarning{
WarningsBase: "Warnings/Warning",
Warning: "",
WarningAttr: "@ShortText",
}

这就是我尝试获取值和属性的方式:

func getWarnings(root *xmlpath.Node, xpath xpath_OC) []Warning {
warnings := []Warning{}
v, _ := xmlpath.Compile(xpath.WarningsBase)
WarningsBaseIter := v.Iter(root)
for WarningsBaseIter.Next() {
rawOffer := WarningsBaseIter.Node()
warning := Warning{
Value: GetString("", xpath.Warning, rawOffer),
Attr: GetString("", xpath.WarningAttr, rawOffer),
}
warnings = append(warnings, warning)
}
return warnings
}
func GetString(ExpressionPrefix string, XPathExpression string, Node *xmlpath.Node) string {
Expr := []string{ExpressionPrefix, XPathExpression}
pathString := strings.Join(Expr, "")
if pathString != "BLANK" {
Path, err := xmlpath.Compile(pathString)
if err == nil {
Value, _ := Path.String(Node)
return Value
}
}
return ""
}

我可以获取短文本,但不能获取值。我一直在检查错误,在终端上显示 Path, err := xmlpath.Compile(pathString) 的结果,显示的错误是 compiling xml path "":0: empty path

有什么解决办法吗??
谢谢。

最佳答案

xmlquery包支持通过XPath表达式从XML中提取数据。

package main

import (
"fmt"
"strings"

"github.com/antchfx/xmlquery"
)

func main() {
xmlStr := `<?xml version="1.0"?><Warnings><Warning Type="309" ShortText="Unfulfilled Paid Service 1">Unable to book seat 1</Warning></Warnings>`
doc, _ := xmlquery.Parse(strings.NewReader(xmlStr))
nodes := xmlquery.Find(doc, "//Warning")
for _, node := range nodes {
fmt.Println(node.SelectAttr("ShortText"))
fmt.Println(node.InnerText)
}
}

关于xml - 使用 xmlpath.v2 golang 获取节点的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45797219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com