C#解析讀取XML檔案,並且對XML檔案進行操作
如果不懂XML文件結構,請點選移步這裡
在綜合搜尋了網上的文章之後發現,有很多文章的講解博主看的一知半解,並且有些方法已經找不到了,所以就有了自己整理一下學習成果,同時通過部落格共享成果
目前還在學習中,先佔坑,後續補上
經過昨天的實驗和測試,補上C#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");//儲存檔案
<test><aaaa attribute="ooooo">hsdf</aaaa></test>
最後,這是程式碼生成的xml字串
寫了這麼多程式碼,最後只得到這麼點東西,好像有點對不起辛苦勞動。。。