xml解析与保存

1、c++版

1.1解析

// 加载
BOOL CConsumStatic::LoadXmlFile(CString strXml)
{
USES_CONVERSION;
TiXmlDocument doc(T2A(strXml));
if (!doc.LoadFile())
{
ZEBRA_HANDLER_AND_RETURN(etInstrumentControl,eciUserDefine,elLog,"Cannot load statistic file.");
}

TiXmlElement *root = doc.RootElement();
TiXmlElement *device;
if (!root)
{
ZEBRA_HANDLER_AND_RETURN(etInstrumentControl,"Cannot get root statistic file.");
}
//加载device
device = root->FirstChildElement();
while (device)
{
const char *value = device->Value();
if (strcmp(value,"Camera") == 0)// 相机
{
if (device->Attribute("opennum1"))
{
m_consumStatic.camera[0].opennum = atoi(device->Attribute("opennum1"));
}
}
device = device->NextSiblingElement();
}

return TRUE;
}

1.2保存


// 保存
BOOL CConsumStatic::SaveXmlFile(CString strXml)
{
USES_CONVERSION;
TiXmlDocument *xmlDoc = new TiXmlDocument();//建立文件句柄
TiXmlDeclaration *decl = new TiXmlDeclaration("1.0","utf-8","");
TiXmlElement *device = new TiXmlElement("Device");//建立一个成员
xmlDoc->LinkEndChild(decl);
xmlDoc->LinkEndChild(device);

// 相机
TiXmlElement *camera = new TiXmlElement("Camera");
device->LinkEndChild(camera);
camera->SetAttribute("opennum1",m_consumStatic.camera[0].opennum);

xmlDoc->SaveFile(T2A(strXml));
delete xmlDoc;

return TRUE;
}

2、c#版

2.1解析

/// <summary>
/// 打开
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public ERRCODE_E Load(string path)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode rootNode = doc.SelectSingleNode("ReagentDefinitions");
if (rootNode == null)
{
return ERRCODE_E.ERR_OPENFILE;
}
m_reagentDic.Clear();
XmlElement root = (XmlElement)rootNode;
version = root.GetAttribute("Version").ToString();
XmlNodeList nodeList = rootNode.ChildNodes;
foreach (XmlNode node in nodeList)
{
XmlElement xe = (XmlElement)node;
string name = xe.GetAttribute("Name").ToString();
if (m_reagentDic.ContainsKey(name))
{
continue;
}
m_reagentDic.Add(name,new List<ReagentInfo>());

XmlNodeList reagentList = node.ChildNodes;
foreach (XmlNode reagent in reagentList)
{
ReagentInfo info = new ReagentInfo();
if (reagent.Attributes["Name"] != null)
{
info.Name = reagent.Attributes["Name"].InnerText;
}
if (reagent.Attributes["Description"] != null)
{
info.Description = reagent.Attributes["Description"].InnerText;
}
if (reagent.Attributes["Position"] != null)
{
info.Position = reagent.Attributes["Position"].InnerText;
}

m_reagentDic[name].Add(info);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return ERRCODE_E.ERR_EXCEPTION;
}

return ERRCODE_E.ERR_SUCCESS;
}

2.2保存

/// <summary>
///保存
/// </summary>
/// <returns></returns>
private voidGetXmlDoc()
{
XmlDocument doc = new XmlDocument();
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0",null);
doc.AppendChild(dec);

//创建一个根节点(一级)
XmlElement root = doc.CreateElement("ReagentDefinitions");
root.SetAttribute("Version",version);
doc.AppendChild(root);

foreach (KeyValuePair<string,List<ReagentInfo>> namePair in m_reagentDic)
{
//创建节点(二级)
XmlElement namexe = doc.CreateElement("ReagentDefinition");
namexe.SetAttribute("Name",namePair.Key);
foreach (ReagentInfo info in namePair.Value)
{
//创建节点(三级)
XmlElement infoxe = doc.CreateElement("Reagent");
infoxe.SetAttribute("Name",info.Name);
infoxe.SetAttribute("Description",info.Description);
infoxe.SetAttribute("Position",info.Position);
namexe.AppendChild(infoxe);
}
root.AppendChild(namexe);
}

doc.Save(path);; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇