示例:
示例:
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这个值