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

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

下面是测试的XML内容

<?xml version =“1.0”encoding =“utf-8”?> 
<library id =“30”>   
	<BOOK id =“20”>     
		<name id =“50”txt =“科目”>高等数学</ name>     
		<name1>大学英语</ name1>   
		<first id =“10”txt =“这是节点么”/>
	</ BOOK> 
</ library>

先需要引用明明空间的的的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");//保存文件

返回结果:
在这里插入图片描述
最后,这是代码生成的xml字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值