内容包括:新建XML文件;在XML文件中查找单个节点或多个节点;并在该节点下添加子节点;同时为添加的子节点赋值 (例一);得到某个节点下的符合条件的所有子节点,并对这些子节点进行操作(例二);并介绍了如何保存XML文件(见附注)
包含头文件;
using System.Xml;
(例一)
private XmlDocument NewXmlFile(PlanningDataTransferBO planningdatatransfer)
{
XmlDocument xmldoc = new XmlDocument(); //新建XML文件
xmldoc.LoadXml("<?xml version=\"1.0\" encoding=\"gb2312\" ?><Da
//找到Da
XmlNode rootNode = xmldoc.SelectSingleNode("/Da
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);
//在Da
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);
}
}
}
}
}
xmldoc.Save(filename);