Go xml文件处理

Python016

Go xml文件处理,第1张

在开发中会常遇到xml数据序列化和反序列化,这里我们介绍go语言处理xml数据。 “encoding/xml” 包实现了一个简单的xml 1.0解析器,可以理解xml名称空间。

示例:

示例:

https://studygolang.com/pkgdoc

1,使用XmlDocument 类分析xml文件的节点等信息读取

2,使用DataSet类,将Xml文件Load进DataSet中,当成表来读

3,序列化

1:如一楼所示,完整的如:

/// <summary>

/// 插入评委

/// </summary>

/// <param name="key">评委编号</param>

/// <param name="name">评委名称</param>

/// <returns>评委编号</returns>

public void Update(int key, string name, bool isNb)

{

if (!File.Exists(DataPath))

{

throw new Exception("修改失败,数据文件不存在!")

}

if (!this.Exist(key))

{

throw new Exception("修改失败,编号不存在!")

}

bool isModify = false

try

{

XmlDocument xmlDoc = new XmlDocument()

xmlDoc.Load(DataPath)

XmlNodeList nodeList = xmlDoc.SelectSingleNode("/base").ChildNodes

foreach (XmlNode xn in nodeList)//遍历所有子节点

{

XmlElement xe = xn as XmlElement

if (xe != null &&xe.GetAttribute("key") == key.ToString())

{

xe.SetAttribute("name", name)

if (isNb)

{

xe.SetAttribute("nb", "1")

}

else

{

xe.SetAttribute("nb", "0")

}

isModify = true

}

}

xmlDoc.Save(DataPath)

}

catch

{

throw new Exception("修改失败,出现未知异常!")

}

if (!isModify)

{

throw new Exception("修改失败,节点不存在!请重置XML文件!")

}

}

2,DataSet读取,百度一下,例子找不到了

3,序列化

/// <summary>

/// 加载用户信息表

/// </summary>

/// <returns></returns>

public CtekOsmUser LoadOsmUser()

{

string userInfoPath = ApplicationData.ExePath + ApplicationData.UserInfoFilePath

if (!File.Exists(userInfoPath))

{

if (!InitManageUser())

{

throw new Exception("初始化用户数据失败!")

}

}

string userXmlStr = GetUserFileStr(userInfoPath)

if (userXmlStr == null)

{

throw new Exception("获取用户数据文件失败!")

}

CtekOsmUser users = SerializeCtekOsmUser(userXmlStr)

if (users == null)

{

throw new Exception("读取用户数据失败!")

}

return users

}

可以用微软的IXMLDOMDocument2, 也可以用CMarkup,CMarkup可以在网上搜他怎么用,VS不自带的,要自己在网上下载代码。感觉CMarkup更容易操作。注意一点就是假如在一个根element下有多个子element,要注意读子element的顺序,从上往下读,不能从下往上读,它会读不到。

以CMarkup为例:

CMarkup readXML

if( !readXML.load(xml文件名)

return

readXML.FindElem("class")

这时候可以用reaXML.GetData()取到132这个值