Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
golang中的xml解析(我想分别访问详细信息中的每个元素)_Xml_Parsing_Go_Nested - Fatal编程技术网

golang中的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

我要分析的XML数据是:

<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
}