Golang xml 使用

解析和读取规则

golang对xml的解析和读取是通过stuct和refect实现的,对于struct中的tag以什么方式对应到xml的元素上,golang的文档中做了如下描述:

  1. 结构体中的XMLName字段或者类型为xml.Name的字段,会被删除.使用此字段tag上定义的属性进行解析
  2. 结构体tag中”-” 在解析过程中会忽略结构体中的这个字段
  3. 结构体tag中”name,attr” 使用name作输出为xml属性,对应字段值作为属性值
  4. 结构体tag中”,attr” 使用字段名作为xml属性,字段值作为xml属性值
  5. 结构体tag中”,chardata” 不作为xml的节点输出,把该字段对应的值作为字符输出
  6. 结构体tag中 “,innerxml” 如果结构体改字段是基本类型如:string,int等,和”,chardata”输出无区别,如果是一个结构体,输出值会是一个完整的xml结构
  7. 结构体tag中 “,comment” 输出xml中的注释
  8. 结构体tag中”omitempty” 该字段是go中的空值:false, 0,空指针,空接口,任何长度为0的切片,数组,字符串和map. 都会被忽略
  9. 结构体中不包含tag 会以改字段作为xml属性名称,值作为xml属性值

举个例子来说明一下上面描述的规则

xml 解析

package main

import(
    "fmt"
    "time"
    "encoding/xml"
)

type TNote struct {
    Lang    string `xml:"lang,attr"`
    Content string `xml:",innerxml"`
}

type TFile struct {
    XMLName  struct{} `xml:"file"`
    FileName string   `xml:"name,attr"`
    Size     string   `xml:"size,attr"`
}

type Release struct {
    XMLName   struct{} `xml:"release"`
    Version   string
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值