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