golang中的xml解析(我想分别访问详细信息中的每个元素)
我要分析的XML数据是:golang中的xml解析(我想分别访问详细信息中的每个元素),xml,parsing,go,nested,Xml,Parsing,Go,Nested,我要分析的XML数据是: <cm> <id>TASK_DATA_RES</id> <task> <swid>3873-0</swid> <detail> <![CDATA[<execute name="EXECUTE"> <swid>3873</swid> <tskid>MONITOR0</tskid
<cm>
<id>TASK_DATA_RES</id>
<task>
<swid>3873-0</swid>
<detail>
<![CDATA[<execute name="EXECUTE">
<swid>3873</swid>
<tskid>MONITOR0</tskid>
<file_name>DiskStatusCheck.ps1</file_name>
<param>/metricName::metric_3873_48 /metric::DiskStatusCheck /warn::1 /critical::1 /alert::1 /params::E:</param>
<timeout></timeout>
<user>test\\test</user>
<passwd>test</passwd> <path>https://mspnocsupport.com/downloadScript.doaction=downloadAgent&fileName=DiskStatusCheck.ps1&version=5.00</path>
<pathtype>local</pathtype>
<size>9147</size>
<encoded_size>9147</encoded_size>
<type>POWERSHELL</type>
<outputdir></outputdir>
<outputfile></outputfile>
<alert>false</alert>
<regkeypath></regkeypath>
<regkeyval></regkeyval>
<process></process>
<service></service>
<version>5.00</version>
<asuser_flag>0</asuser_flag>
</execute>]]>
</detail>
</task>
</cm>
之后,我想打印详细结构的单个值,如名称、Swid等。我尝试解析您的xml,您可以在找到完整的解决方案。格式设置使您很难看到您拥有什么、想要什么和尝试了什么。您的var v指的是具有ID和任务数组的任务数据结构。在打印时,您试图打印v.SwidD、v.Tskid等,它们不是task_data_res struct的一部分,因此您遇到了错误。您能提供一个最小的(或至少小得多的)示例来说明您想要做什么吗?谢谢您的帮助。您能为我推荐一些资源来深入研究这种解析和GOLANG吗。
type detail struct{
Name string `xml:"detail>name"`
Swid string `xml:"detail>swid"`
Tskid string `xml:"detail>tskid"`
File string `xml:"detail>file"`
Param string `xml:"detail>params"`
User string `xml:"detail>user"`
Passwd string `xml:"detail>passwd"`
Path string `xml:"detail>path"`
Pathtype string `xml:"detail>pathtype"`
Size int `xml:"detail>size"`
Encode string `xml:"detail>encode"`
Type string `xml:"detail>type"`
Outputdir string `xml:"detail>outputdir"`
Outputfile string `xml:"detail>outputfile"`
Alert string `xml:"detail>alert"`
Regkeyval string `xml:"detail>regkeyval"`
Process string `xml:"detail>process"`
Service string `xml:"detail>service"`
Version float64 `xml:"detail>version"`
Asuser_flag string `xml:"detail>asuser_flag"`
}
type task struct{
Swid string `xml:"swid"`
Details []detail `xml:"Details>detail"`
}
type task_data_res struct{
ID string `xml:"id"`
//Swid string `xml:"task>swid"`
Tasks []task `xml:"Tasks>task"`
}
v := task_data_res{}
err := xml.Unmarshal([]byte(*dxml), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}