zoukankan      html  css  js  c++  java
  • C#对xml的基本操作

    代码原型为一个投票系统保存投票数的一个功能.

    先建一个简单的xml文件:

    <?xml version="1.0" encoding="utf-8"?>
    <vote>
      <answer type="0">
        <num>12</num>
      </answer>
      <answer type="1">
        <num>8</num>
      </answer>
      <answer type="2">
        <num>18</num>
      </answer>
    </vote>

    最基础的C#代码(写入数据):

     1 string xmlFilePath = Server.MapPath("/Html/Activity/006/file/data.xml");
     2             XmlDocument xmlDoc = new XmlDocument();
     3             xmlDoc.Load(xmlFilePath);
     4             XmlNodeList nodeList = xmlDoc.SelectSingleNode("vote").ChildNodes; //找到父节点为vote下的所有子节点
     5             foreach (XmlNode xn in nodeList)
     6             {
     7                 XmlElement xe = (XmlElement)xn;
     8                 if (xe.GetAttribute("type") == content) //找到子节点type相对应值下的所有子节点
     9                 {
    10                     XmlNodeList nls = xe.ChildNodes;
    11                     foreach (XmlNode xn1 in nls)
    12                     {
    13                         XmlElement xe2 = (XmlElement)xn1;
    14                         xe2.InnerText = (Convert.ToInt32(xe2.InnerText) + 1).ToString();  //目标子节点的值进行+1的操作
    15                     }
    16                 }
    17             }
    18             xmlDoc.Save(xmlFilePath);

    //比较简单,只需要知道如何读取一个xml文档,然后写入数据,最后保存xml.

    C#最简单的读取数据:

            List<string> list = new List<string>();
           string xmlFilePath = Server.MapPath("/Html/Activity/006/file/data.xml");
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(xmlFilePath);
                XmlNodeList nodeList = xmlDoc.SelectSingleNode("vote").ChildNodes;
                foreach (XmlNode xn in nodeList)
                {
                    XmlElement xe = (XmlElement)xn;
                    foreach (XmlNode xn1 in xe.ChildNodes)
                    {
                        XmlElement xe2 = (XmlElement)xn1;
                        list.Add(xe2.InnerText);
                    }
                }
    //首先申明一个List,然后将xml读取到的数据放到list里面,再然后,你懂的.

    加强版:

    引入xml.linq

    改进上面的xml

    <?xml version="1.0" encoding="utf-8"?>
    <vote>
      <answer type="0" num="6" />
      <answer type="1" num="2" />
      <answer type="2" num="3" />
    </vote>

    C#写入数据:

           var p = CustomUtility.GetMapPath("/Html/Activity/006/file/data.xml");
                var root = XElement.Load(p);
                var answer = root.Elements("answer").Where(a => a.Attribute("type").Value == content).FirstOrDefault();
                if (answer != null)
                {
                    var n = Int64.Parse(answer.Attribute("num").Value);
                    answer.SetAttributeValue("num", n + 1);
                }
                else
                {
                    root.Add(new XElement("answer", new XAttribute("type", content), new XAttribute("num", 1))); //如果xml没有对应的数据,将会新建相对应的数据
                }
                root.Save(p);

    写入数据:

    1 List<string> list = new List<string>();
    2             var p = CustomUtility.GetMapPath(act_006_xmlPath);
    3             var root = XElement.Load(p);
    4             root.Elements("answer").ToList().ForEach(s => {
    5                 list.Add(s.Attribute("num").Value);
    6             });
  • 相关阅读:
    How to Integrate JCaptcha in Spring Security
    精简的webservice
    linux时间与Windows时间不一致的解决
    java泛型
    spring全局变量引起的并发问题
    ByteBuffer常用方法详解
    cindy
    NIO之Buffer的clear()、rewind()、flip()方法的区别
    Java NIO(New I/O)的三个属性position、limit、capacity
    技术选型
  • 原文地址:https://www.cnblogs.com/hiytom/p/3481585.html
Copyright © 2011-2022 走看看