欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 配置文件格式 XML 快速上手

配置文件格式 XML 快速上手

2024/10/24 3:26:20 来源:https://blog.csdn.net/K346K346/article/details/140575526  浏览:    关键词:配置文件格式 XML 快速上手

文章目录

  • 1.语法
  • 2.实例
  • 3.解析
  • 参考文献

XML(Extensible Markup Language)是可扩展标记语言,用来传输和存储数据。因为其允许用户自定义标记名称,具有自我描述性,可灵活地用于存储服务配置信息。

1.语法

XML 文档结构是一种树结构,它从“根部”开始,然后扩展到“枝叶”。XML 文档必须有一个唯一的根结点,根结点包含所有其它结点。所有结点均可拥有文本内容和属性(名称/值的对)。XML 结点也叫做 XML 元素。

编写 XML 文档时,还需要注意以下几点:
(1)所有 XML 元素都须有关闭标签;
(2)XML 标签对大小写敏感;
(3)XML 的属性值须加引号;
(4)XML 中的特殊字符可以使用实体引用来表示。在 XML 中,有 5 个预定义的实体引用:

实体引用字符名称
&lt;<小于
&gt;>大于
&amp;&和号
&apos;单引号
&quot;"引号

(5)在 XML 中编写注释的语法与 HTML 的语法很相似:

<!-- This is a comment --> 

(6)XML 元素必须遵循以下命名规则:

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符串 xml(或者 XML、Xml)开始
  • 名称不能包含空格
  • 名称不能使用保留的字词

2.实例

下面以 XML 表示一个简单的后台服务配置:

<?xml version="1.0" encoding="UTF-8"?>
<server name="UserProfileServer"><maxconns>1000</maxconns><queuecap>10000</queuecap><queuetimeout>300</queuetimeout><loginfo><loglevel>ERROR</loglevel><logsize>10M</logsize><lognum>10</lognum><logpath>/usr/local/app/log</logpath></loginfo>
</server>

第一行是 XML 声明,它定义 XML 的版本(1.0)和所使用的编码(UTF-8)。紧接着 server 为根结点,name 为根结点的一个属性,表示服务名称,其他子结点的文本内容表示服务的具体配置项。

3.解析

使用 XML 存储服务配置信息,我们如何解析呢?下面以 Go 为例,来解析上面的 XML 格式的服务配置。

第一步,将上面的 XML 配置信息粘贴到 XML to Go struct 快速获取 Go struct 的定义。

type Server struct {Name         string   `xml:"name,attr"`		//标签属性Maxconns     string   `xml:"maxconns"`Queuecap     string   `xml:"queuecap"`Queuetimeout string   `xml:"queuetimeout"`Loginfo      struct {Loglevel string `xml:"loglevel"`Logsize  string `xml:"logsize"`Lognum   string `xml:"lognum"`Logpath  string `xml:"logpath"`} `xml:"loginfo"`
} 

第二步,借助 Go 自带的 encoding/xml 包完成 XML 文档解析。

package mainimport("encoding/xml""io/ioutil""fmt""os"    
)func main() {file, err := os.Open("server.xml")if err != nil {fmt.Printf("error:%v\n", err)return}defer file.Close()data, err := ioutil.ReadAll(file)if err != nil {fmt.Printf("error: %v", err)return}v := Server{}err = xml.Unmarshal(data, &v) if err != nil {fmt.Printf("error:%v\n", err)return}fmt.Printf("%+v\n", v)
}

运行输出:

{Name:UserProfileServer Maxconns:1000 Queuecap:10000 Queuetimeout:300 Loginfo:{Loglevel:ERROR Logsize:10M Lognum:10 Logpath:/usr/local/app/log}}

参考文献

XML 简介 - XML:可扩展标记语言 | MDN
Go Package xml
XML to Go struct Online Tool

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com