zoukankan      html  css  js  c++  java
  • c# XML 有多个重复子节点操作

    1,继续添加ebm子节点

    public static void CreateXml()
            {
                //创XML建对象
                XmlDocument doc = new XmlDocument();
                //声明根节点
                XmlElement books;
                //判断文件是否存在
                if (File.Exists("d://Test.xml"))
                {
                    //该文件存在
                    //加载文件
                    doc.Load("d://Test.xml");
                    //获得根节点
                    books = doc.DocumentElement;
    
                }
                else//该文件不存在
                {
                    //创建声明
                    XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
                    doc.AppendChild(dec);
                    //创建根节点
                    books = doc.CreateElement("EBD");
                    doc.AppendChild(books);
                }
    
                //开始正常写入信息就可以了
                XmlElement xml = doc.CreateElement("EBM");
                books.AppendChild(xml);
    
                XmlElement ebmId = doc.CreateElement("EBMID");
                ebmId.InnerText = "1";
                xml.AppendChild(ebmId);
    
                XmlElement areaCode = doc.CreateElement("AreaCode");
                areaCode.InnerText = "360699999901";
                xml.AppendChild(areaCode);
    
                XmlElement startTime = doc.CreateElement("StartTime");
                startTime.InnerText = "2018-07-26 9:06:04";
                xml.AppendChild(startTime);
    
                XmlElement endTime = doc.CreateElement("EndTime");
                endTime.InnerText = "2018-07-26 7:22:04";
                xml.AppendChild(endTime);
    
                XmlElement msgType = doc.CreateElement("MsgType");
                msgType.InnerText = "1";
                xml.AppendChild(msgType);
    
                doc.Save("d://Test.xml");
            }
    

    2, 修改某个子节点(通过EBMID确定具体的节点)

    public static void UpdateXmlForEBMID(string ebmId)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("d://Test.xml");
                var xns = xmlDoc.SelectSingleNode("EBD");
                XmlNodeList xnl = xns.ChildNodes;
                foreach(XmlNode xn in xnl )
                {
                    XmlElement xe = (XmlElement)xn;
                    XmlNodeList xnl2 = xe.ChildNodes;
                    foreach (XmlNode xn2 in xnl2)
                    {
                        XmlElement xe2 = (XmlElement)xn2;
    
                        if (xe2.InnerText.Equals(ebmId))
                        {
                            XmlNodeList elemList = xe.GetElementsByTagName("MsgType");
                            elemList[0].InnerXml = "2";
                        }
                        break;
                    }
                    //break;//如果更新完了指定节点,有需要则退出循环
                }
                xmlDoc.Save("d://Test.xml");//保存的该XML文件,否则更新无效
            }
    

    3,读取某个子节点下的所有属性值(这边也是通过EBMID去匹配)

    public static void ReadXMLForLog(string xmlPath,string ebmId)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load("d://Test.xml");
                var xns = xmlDoc.SelectSingleNode("EBD");
                XmlNodeList xnl = xns.ChildNodes;
                Dictionary<string, string> obj = new Dictionary<string, string>();
                
                foreach (XmlNode xn in xnl)
                {
                    XmlElement xe = (XmlElement)xn;
                    XmlNodeList xnl2 = xe.ChildNodes;
    
                    foreach (XmlNode xn2 in xnl2)
                    {
                        XmlElement xe2 = (XmlElement)xn2;
                        if (xe2.InnerText.Equals("2"))
                        {
                            var objs = new {
                                EBMID = xe.GetElementsByTagName("EBMID"),
                                AreaCode = xe.GetElementsByTagName("AreaCode"),
                                StartTime= xe.GetElementsByTagName("StartTime"),
                                EndTime = xe.GetElementsByTagName("EndTime"),
                                MsgType = xe.GetElementsByTagName("MsgType"),
                            };
                            string ebmIdValue = objs.EBMID[0].InnerText;
                        }
                        break;
                    }
                }
            }
  • 相关阅读:
    Oracle数据库安装
    [转]卡西欧手表调日期正确方法
    python密码处理(可用于生产模式)
    [转]python对json的相关操作
    [转]Python中的with…as…
    Python标准库--os模块
    我的github代码添加
    Python正则表达式+自创口诀
    自己总结python用xlrdxlwt读写excel
    CentOS安装+配置+远程
  • 原文地址:https://www.cnblogs.com/victor-huang/p/9583314.html
Copyright © 2011-2022 走看看