內容包括:新建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);
}
}
}
}
}
xmldoc.Save(filename);