今天學習XML,遇到XmlNode和XmlElement倆個類,故有了下文的所述:
今天在做asp.net操作XML文檔的過程中,發現了兩個類:XmlNode和XmlElement。這兩個類的功能極其類似(因為我們一般都是在對 Element節點進行操作)。上網搜羅了半天,千篇一律的答案。永遠說不到重點,有些人回答又特別含糊,無奈之下,自己設斷點嘗試對比效果,現在總結如 下:1、通過繼承關系XmlElement繼承自XmlLinkedNode又繼承自XmlNode類,由此可知XmlElement是XmlNode的子類。我們知道子類繼承了父類所有的屬性和方法,因此,XmlNode所擁有的方法和屬性,在XmlElement類中也是可以使用的。2、XmlElement是特殊的XmlNode類,Xml節點有多種類型:屬性節點、注釋節點、文本節點、元素節點等。也就是XmlNode是這多種節點的統稱。但是XmlElement專門指的就是元素節點。3、XmlElement是具現類,可以直接實例化,而XmlNode是抽象類,必須通過XmlDocument實例通過CreateNode創建。4、XmlElement擁有眾多對Attribute的操作方法,可以方便的對其屬性進行讀寫操作(XmlNode也可以通過Attributes屬性獲取屬性列表)。5、在網上看到有人這么評論這兩個類的區別:XmlNode包含子節點,XmlElement只包含屬性及其本身不含有子節點。但是我通過代碼測試,發現即使是XmlElement,也可以通過ChildNodes來獲取子節點列表。雖然在斷點中斷模式下,我并沒有發現XmlElement有ChildNodes屬性。舉例如下:<Bookimg="aspnet.jpg">//是XmlNode也是XmlElement,但是img以及aspnet.jpg只是XmlNode<Name>//既是XmlNode也是XmlElementC#//只是XmlNode</Name></Book>也就是元素節點可以相應轉換為XmlElement,這樣既可以使用XmlNode的功能,也可以使用它特有的對屬性的操作方法。任意節點都可以使用XmlNode,因為XmlNode是所有Node的父類。這只是我個人試驗后的戳見,有不對的地方,或者是有需要補充的地方希望前輩們指正。
轉載自http://bbs.csdn.net/topics/330203920
創建XML的文件名為:cjp.xml
<?xml version="1.0" encoding = "utf-8"?> //文檔頭,文檔頭前面不能什么的注釋或代碼
<lanou> //開標簽<名字> 這里的lanou是根節點,根節點有且只有一個 <!-- 注釋:老師數組子節點 --> //注釋形式: <!-- 注釋的內容 --> <teachers> //<teachers>子節點,里面有多個<teacher>節點,所以我們可以理解為teachers數組 <!--每個老師 --> <teacher> <!-- 老師的屬性 --> <name>二浩</name> <age>34</age> </teacher> <teacher> <name>易慧云</name> <age>31</age> <class>39</class> </teacher> <teacher> <name>徐明新</name> <age>30</age> <wife> <name>莉娜</name> </wife> </teacher> </teachers></lanou> //閉標簽</ 名字>
usingUnityEngine;usingSystem.Collections;//處理XML結構的文檔//1.引入庫usingSystem.Xml;下面是在unity里面寫得代碼publicclassDataManager:MonoBehaviour{//函數voidLoad(){//1.使用XML庫內的XmlDocument對象XmlDocumentxmldoc=newXmlDocument();//能吧xml庫內的文檔給讀取出來//使用xmldoc對象加載xml結構的文檔字符串xmldoc.LoadXml("<?xmlversion=/"1.0/"encoding=/"utf-8/"?><lanou>藍鷗</lanou>");TextAssetta=Resources.Load("cjp")asTextAsset;xmldoc.LoadXml(ta.text);//xmldoc.Load("Resources/cjp.xml");//每個XML文檔內有且只有一個根節點XmlElementroot=xmldoc.DocumentElement;//找到所有的teacher列表第一個//XmlNodeListlist=xmldoc.SelectNodes("http://teacher[1]");//XmlNodeListlist=xmldoc.SelectNodes("http://teacher[wife]");//XmlNodeListlist=xmldoc.SelectNodes("http://teacher[age=30]");
// XmlNodeListlist=xmldoc.SelectNodes("http://teacher[lase()]");//最后一個
//foreach(XmlNodenodeinlist){
// Debug.Log(node.Name+":"+node.InnerText);//
}
Debug.Log(root.InnerText);
// Debug.Log(root.Name);
}
voidStart(){
Load();
}
新聞熱點
疑難解答