您的位置:首页 > 编程语言 > C#

C#中对XML文件进行新建、查找、插入、修改、保存等操作

2011-01-20 16:11 681 查看
内容包括:新建XML文件;在XML文件中查找单个节点或多个节点;并在该节点下添加子节点;同时为添加的子节点赋值 (例一);得到某个节点下的符合条件的所有子节点,并对这些子节点进行操作(例二);并介绍了如何保存XML文件(见附注)

包含头文件;

using System.Xml;

(例一)

private XmlDocument NewXmlFile(PlanningDataTransferBO planningdatatransfer)
{
XmlDocument xmldoc = new XmlDocument(); //新建XML文件
xmldoc.LoadXml("<?xml version=/"1.0/" encoding=/"gb2312/" ?><Data></Data>"); //添加文件头和根节点Data
//找到Data节点,并在该节点下创建ProjectInfo节点
XmlNode rootNode = xmldoc.SelectSingleNode("/Data"); / /查找单个节点
XmlNode projInfoNode = xmldoc.CreateElement("ProjectInfo");
rootNode.AppendChild(projInfoNode);

XmlNode node_temp;
//在ProjectInfo下添加项目名称
node_temp = xmldoc.CreateNode(XmlNodeType.Element, "ProjectName", null);
node_temp.InnerText = planningdatatransfer.ProjectName;
projInfoNode.AppendChild(node_temp);
//在ProjectInfo下添加项目编号
node_temp = xmldoc.CreateNode(XmlNodeType.Element, "ProjectCode", null);
node_temp.InnerText = planningdatatransfer.ProjectCode;
projInfoNode.AppendChild(node_temp);

//在Data节点下创建Registry节点
XmlNode regisNode = xmldoc.CreateElement("Registry");
rootNode.AppendChild(regisNode);
//在Registry节点下创建RegistryInfo节点
XmlNode regisInfo = xmldoc.CreateElement("RegistryInfo");
regisNode.AppendChild(regisInfo);
//在RegistryInfo下添加申请号
node_temp = xmldoc.CreateNode(XmlNodeType.Element, "RegistryCode", null);
node_temp.InnerText = planningdatatransfer.RegistryFileNo;
regisInfo.AppendChild(node_temp);
//在RegistryInfo下添加申请内容
node_temp = xmldoc.CreateNode(XmlNodeType.Element, "RegistryContent", null);
node_temp.InnerText = planningdatatransfer.Include;
regisInfo.AppendChild(node_temp);
//在RegistryInfo下添加申请类型
node_temp = xmldoc.CreateNode(XmlNodeType.Element, "RegistryType", null);
node_temp.InnerText = planningdatatransfer.OperationType;
regisInfo.AppendChild(node_temp);
//在RegistryInfo下添加决定时间
node_temp = xmldoc.CreateNode(XmlNodeType.Element, "ApproveTime", null);
String approvetime = Factory.ServiceFactory.GetCertificateService().GetMaxCertificateDateByRegistryID(planningdatatransfer.RegistryID);
if (approvetime != null)
node_temp.InnerText = approvetime.ToString();
else
node_temp.InnerText = planningdatatransfer.EndDate;
regisInfo.AppendChild(node_temp);
//在RegistryInfo下添加结案时间
node_temp = xmldoc.CreateNode(XmlNodeType.Element, "SubmitTime", null);
node_temp.InnerText = planningdatatransfer.EndDate;
regisInfo.AppendChild(node_temp);
//在RegistryInfo下添加规划师
node_temp = xmldoc.CreateNode(XmlNodeType.Element, "RegistryPerson", null);
node_temp.InnerText = planningdatatransfer.Planer;
regisInfo.AppendChild(node_temp);
return xmldoc;
}

(例二)

doc为XML文件

XmlNode status = doc.SelectSingleNode("/ReturnContent/ExecuteInfo/Status");
if (status.InnerXml == "Success")
{
XmlNodeList regisNum = doc.SelectNodes("/ReturnContent/Registry"); //查找某节点下的多个节点
foreach (XmlNode registry in regisNum)
{ //对得到的节点列表中的每个节点进行操作
XmlNode regisState = registry.SelectSingleNode("RegistryState");
if (regisState.InnerXml == "Success") //得到某个节点的值
{
XmlNode regisCode = registry.SelectSingleNode("RegistryCode");
string registryCode = regisCode.InnerXml;
if (registryCode != "")
{
Registry reg = Factory.ServiceFactory.GetRegistryService().GetRecordByRegisFileNO(registryCode);
if (reg != null)
{
reg.ArchiveDate = DateTime.Now;
Factory.ServiceFactory.GetRegistryService().UpdateRegistry(reg);
}
}
}
}
}

附注:XML文件的保存

xmldoc.Save(filename);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: