c#_可扩展标记语言XML

先说一下XML的文档格式:

1、文档声明   文档中必须有一个根标签

    <?xml version="1.0"?>

2、元素(根元素/顶层元素) = 标签

    <student>

    </student>   结束的时候加一个反斜杠

3、属性

    <name>小明</name>  需要注意编码规则UTF-8

        属性也可以像下面这样写:

    <student name="小明">   这里单引号和双引号都可以

    </student> 

4、注释

    <!--注释-->  

5、CDATA区

    <![CDATA[不想被解析的内容]]>

6、特殊字符

  • &    &amp;
  •    &lt;
  •    &gt;
  • "    &quot;   浏览器单、双引号直接打也能输出,但是解析器不行
  • '     &apos;


c#对XML文件进行操作

using System.Xml;
public class RWxml
{
        public void WriteXml()
        {          
            XmlDocument xDoc = new XmlDocument();  //首先创建xml文档
            XmlDeclaration declaration = xDoc.CreateXmlDeclaration("1.0","UTF-8","yes");  //创建xml文档声明所需变量
            xDoc.AppendChild(declaration);   //将节点添加到该节点子节点列表末尾
            XmlElement elem = xDoc.CreateElement("students");  //每个xml必须有一个根节点,创建根节点students
            xDoc.AppendChild(elem);

            XmlElement elemChild1 = xDoc.CreateElement("student"); //添加子节点
            elem.AppendChild(elemChild1);  //将第一级的子节点添加到根节点的下面

            elemChild1.SetAttribute("姓名","张三");  //给节点添加属性
            elemChild1.SetAttribute("学号", "08080808");

            XmlElement elemChild1_1 = xDoc.CreateElement("语文成绩"); //添加子节点(第三节点)
            elemChild1.AppendChild(elemChild1_1);
            elemChild1_1.InnerText = "80";//增加节点中的数据
            XmlElement elemChild1_2 = xDoc.CreateElement("数学成绩"); //添加子节点(第三节点)
            elemChild1.AppendChild(elemChild1_2);
            elemChild1_2.InnerText = "90";
            XmlElement elemChild1_3 = xDoc.CreateElement("英语成绩"); //添加子节点(第三节点)
            elemChild1.AppendChild(elemChild1_3);
            elemChild1_3.InnerText = "85";

            xDoc.Save("students.xml"); 
        }

        public void ReadXml()
        {
            XmlDocument xDoc = new XmlDocument();  
            xDoc.Load("students.xml");

            //想要拿到下面的值首先要获取根节点(如果重名只取第一个)//
            XmlNode node = xDoc.SelectSingleNode("students");  //获取根节点
            XmlNodeList nodeList = node.ChildNodes; //获取节点的所有子节点
            foreach(XmlNode xn in nodeList)
            {
                //string name = xn.Name; //节点的名字

                //做类型显示转换才能调到属性//
                XmlElement xmle = (XmlElement)xn;
                string name = xmle.GetAttribute("姓名");
                string banji = xmle.GetAttribute("学号");

                XmlNodeList childrenList = node.ChildNodes; //获取节点的所有子节点
                foreach (XmlNode n in childrenList)
                {
                    XmlElement xe = (XmlElement)xn;

                    string subject = xe.Name;
                    string score = xe.InnerText;
    
                    Console.WriteLine(subject + score);
                }
            }
        }
}

注意:修改xml参数之后一定要Save一下!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值