C#解析读取XML文件,并且对XML文件进行操作

如果不懂XML文档结构,请点击移步这里

在综合搜索了网上的文章之后发现,有很多文章的讲解博主看的一知半解,并且有些方法已经找不到了,所以就有了自己整理一下学习成果,同时通过博客共享成果

目前还在学习中,先占坑,后续补上

经过昨天的实验和测试,补上C#XML的信息读取操作

 

嗯,排版什么的,都是浮云,请各位直接忽略(/捂脸)

下面是测试的XML内容

<?xml version =“1.0”encoding =“utf-8”?> 
   
     
高等数学     
大学英语   

 

 

先需要引用明明空间的的的System.Xml

XmlDocument x = new XmlDocument(); 
x.LoadXml(/ *加载的XML文件* /); //加载xml文档,就是这么简单

 

<标签属性=“值”>值<标签/>这是元素,对应于

XmlDocument里面的Node,x.DocumentElement.FirstChild就是根节点,也就是第一个子节点,节点可以包含很多子节点,但是根节点只有一个

如果xml文档有<?xml version =“1.0”encoding =“utf-8”?>这样的字符,那么x.FirstChild就指的是这个xml,如果没有,那么就是指的根节点
有兴趣的同学可以自己打印试一下

 

 

        x = new XmlDocument();
        x.LoadXml(a.ToString());
        Debug.Log(x.InnerXml);
        XmlNodeReader xmlNode = new XmlNodeReader(x.GetElementsByTagName("library")[0]);
        Debug.Log(x.ChildNodes.Count);//打印子节点数量
        Debug.Log(x.ChildNodes[1].Name);//打印节点名称
        Debug.Log(xmlNode.MoveToContent());//如果有下一个节点,直接指向下一个节点
        Debug.Log(xmlNode.AttributeCount);//打印属性数量
        Debug.Log(xmlNode.MoveToAttribute("id"));//获取该属性节点的值
        Debug.Log(xmlNode.Value);//打印获取值
        Debug.Log(x.GetElementsByTagName("library")[0].Name);//打印节点名称
        Debug.Log(x.GetElementsByTagName("library")[0].Attributes["id"].Value);//打印节点属性值
        Debug.Log(x.GetElementsByTagName("name")[0].InnerText);//打印节点值
        Debug.Log(x.GetElementsByTagName("name")[0].Attributes.Count);//打印属性数量
        Debug.Log(x.GetElementsByTagName("name")[0].Attributes["txt"].Value);//打印属性值
        Debug.Log(x.DocumentElement.Name);
        Debug.Log(x.DocumentElement.FirstChild.Name);
        XmlNodeList nodeList = x.DocumentElement.FirstChild.ChildNodes;
        foreach (XmlElement xe in nodeList)
        {
            Debug.Log(xe.InnerText);
            if (xe.HasAttributes)
            {
                Debug.Log(xe.Attributes.Count);
                for (int i = 0; i < xe.Attributes.Count; i++)
                    Debug.Log(xe.Attributes[i].Name);
                Debug.Log(xe.Attributes["id"].Value);
                Debug.Log(xe.Attributes["txt"].Value);
            }
        }

哈,上面的代码中,有些可以直接通过的foreach循环操作

不过,神奇的是<标签属性=“值”/>这样也算作一个节点,一样可以通过上面的方法读取

通过代码操作XML的方法,随后再补充吧

 

补充通过代码生成xml文档的方式

 

        x = new XmlDocument();//创建一个xml文档
        XmlElement element = x.CreateElement("aaaa");//生成元素
        element.InnerText = "hsdf";//元素值
        XmlAttribute attribute = x.CreateAttribute("attribute");//生成属性
        attribute.Value = "ooooo";//设置属性值
        element.SetAttributeNode(attribute);//设置元素属性
        XmlNode node = x.CreateNode(XmlNodeType.Element, "test", "");//生成节点
        node.AppendChild(element);//添加节点
        x.AppendChild(node);//添加节点
        x.Save(@"G:/JoSing/test.xml");//保存文件

hsdf

最后,这是代码生成的xml字符串

写了这么多代码,最后只得到这么点东西,好像有点对不起辛苦劳动。。。

你可能感兴趣的:(C#)