如果不懂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字符串