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);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值