douyingmou1389 2015-11-05 12:43
浏览 33
已采纳

Golang中的xml解析(我想分别访问详细信息中的每个元素)

The XML data that i want to parse is:

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

The corresponding structure to parse such XML documents:

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
}

After that i want to print individual value of Detail structure such as name,Swid etc.

  • 写回答

1条回答 默认 最新

  • dpkt31779 2015-11-06 11:56
    关注

    I have tried to parse your xml, you can find complete solution at http://play.golang.org/p/1UCaGYetzo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题