加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang XML属性和值

发布时间:2020-12-16 19:28:58 所属栏目:大数据 来源:网络整理
导读:我似乎无法弄清楚为什么这不工作 type HostProperties struct { XMLName xml.Name `xml:HostProperties"` Info []InfoList `xml:"tag"` } type InfoList struct { HostEnd string `xml:",chardata"` PatchSummary string `xml:",chardata"` CPE1 string `xml
我似乎无法弄清楚为什么这不工作
type HostProperties struct {                                                                                                                     
          XMLName xml.Name   `xml:HostProperties"`                                                                                                 
          Info    []InfoList `xml:"tag"`                                                                                                           
 }                                                                                                                                                
  type InfoList struct {                                                                                                                           
          HostEnd         string  `xml:",chardata"`                                                                                                
          PatchSummary    string  `xml:",chardata"`                                                                                                
          CPE1            string  `xml:",chardata"`                                                                                                
          CPE0            string  `xml:",chardata"`                                                                                                
          SystemType      string  `xml:",chardata"`                                                                                                
          OperatingSystem string  `xml:",chardata"`                                                                                                
          MacAddress      string  `xml:",chardata"`                                                                                                
          Traceroute      string  `xml:",chardata"`                                                                                                
          IP              string  `xml:",chardata"`                                                                                                
          FQDN            string  `xml:",chardata"`                                                                                                
          HostStart       string  `xml:",chardata"`                                                                                                
  }
<HostProperties>
<tag name="HOST_END">Thu Feb 20 12:38:24 2014</tag>
<tag name="patch-summary-total-cves">4</tag>
<tag name="cpe-1">cpe:/a:openbsd:openssh:5.6 -&gt; OpenBSD OpenSSH 5.6</tag>
<tag name="cpe-0">cpe:/o:vmware:esx_server</tag>
<tag name="system-type">hypervisor</tag>
<tag name="operating-system">VMware ESXi</tag>
<tag name="mac-address">00:00:00:00:00:00</tag>
<tag name="traceroute-hop-0">172.28.28.29</tag>
<tag name="host-ip">172.28.28.29</tag>
<tag name="host-fqdn">foobar.com</tag>
<tag name="HOST_START">Thu Feb 20 12:30:14 2014</tag>
</HostProperties>

结果

{HostEnd:172.28.28.29 PatchSummary: CPE1: CPE0: SystemType: OperatingSystem: MacAddress: Traceroute: IP: FQDN: HostStart:}

它创建一堆新的片,只有第一个元素填充,甚至是错误的元素.它没有填写其他变量.文件的其余部分似乎解析不错,只是无法弄清楚这部分.

我不认为你可以使XML解析工作.这是我可以想出来的最好的( run it on the playground)
var data = `<HostProperties>
<tag name="HOST_END">Thu Feb 20 12:38:24 2014</tag>
<tag name="patch-summary-total-cves">4</tag>
<tag name="cpe-1">cpe:/a:openbsd:openssh:5.6 -&gt; OpenBSD OpenSSH 5.6</tag>
<tag name="cpe-0">cpe:/o:vmware:esx_server</tag>
<tag name="system-type">hypervisor</tag>
<tag name="operating-system">VMware ESXi</tag>
<tag name="mac-address">00:00:00:00:00:00</tag>
<tag name="traceroute-hop-0">172.28.28.29</tag>
<tag name="host-ip">172.28.28.29</tag>
<tag name="host-fqdn">foobar.com</tag>
<tag name="HOST_START">Thu Feb 20 12:30:14 2014</tag>
</HostProperties>`

type HostProperties struct {
    XMLName xml.Name `xml:HostProperties"`
    Tags    []Tag    `xml:"tag"`
}

type Tag struct {
    Key   string `xml:"name,attr"`
    Value string `xml:",chardata"`
}

func main() {
    v := new(HostProperties)
    err := xml.Unmarshal([]byte(data),v)
    if err != nil {
        fmt.Printf("error: %v",err)
        return
    }
    fmt.Printf("v = %#vn",v)

}

如果你真的想要这个InfoList结构,你必须运行这个标签并填写它.我可能只是把它粘贴在一个地图[string]字符串,虽然像这样

tags := make(map[string]string)
for _,tag := range v.Tags {
    tags[tag.Key] = tag.Value
}
fmt.Printf("map = %#vn",tags)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读