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

內容包括:新建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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章