gpt4 book ai didi

xml - 去XML chardata打印空行

转载 作者:行者123 更新时间:2023-12-03 10:07:23 25 4
gpt4 key购买 nike

我有一个基本的xml字段,看起来像这个<cpe test="123">cpe:/a:openbsd:openssh:5.3p1</cpe>,我想使用Go解码它。我创建了对象,尽管它通常会解码并打印测试属性,但括号内的内容始终打印为空。

package main

import (
"fmt"
"encoding/xml"
)

type Cpe struct {
XMLName xml.Name `xml:"cpe"`
Value string `xml:"chardata"`
Res string `xml:"test,attr"`
}

func main() {

var inputXML = `<cpe test="123">cpe:/a:openbsd:openssh:5.3p1</cpe>`

byteValue := []byte(inputXML)

// Create the onject
var cpe Cpe

// Unmarshal the xml using the Address object
xml.Unmarshal(byteValue, &cpe)

// prints the Res and Address Value
fmt.Println(cpe.Res)
fmt.Println(cpe.Value)
}
这些东西的输出是 123nothing。通过谷歌搜索,我发现可以使用 innerXML代替 chardata,结果相同。
游乐场: https://play.golang.org/p/7eyoXjnOlS4

最佳答案

chardata是一个选项,而不是XML标记或属性名称,因此,如果仅指定一个选项,则必须在其前面加上一个逗号:

Value   string   `xml:",chardata"`
还检查错误:
// Unmarshal the xml using the Address object
err := xml.Unmarshal(byteValue, &cpe)
fmt.Println("err:", err)

// prints the Res and Address Value
fmt.Println("attribute:", cpe.Res)
fmt.Println("chardata:", cpe.Value)
这将输出(在 Go Playground上尝试):
err: <nil>
attribute: 123
chardata: cpe:/a:openbsd:openssh:5.3p1

关于xml - 去XML chardata打印空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65338250/

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