天天看點

驗證innerXml,outerXml,innerText的不同

昨天看到關于xml的有關操作,在讀的過程中,由于是初學者有不明白的地方就查資料,發現自己多innerXml,outerXml,innerXml的了解很不清楚,自己就在原有代碼的上進行了部分修改(這不算侵權吧

驗證innerXml,outerXml,innerText的不同

)。首先建立的xml的結構是這樣子的,并命名為U-Shop:

<Teams>

  <Member team="U-Shop" Description="U-Shop團隊">

    <name>靈動生活</name>

    <position>planning</position>

  </Member>

    <name>藍藍海天</name>

    <position>support</position>

    <name>神舟龍</name>

    <position>lean</position>

</Teams>

确定路徑:

string myXmlFilePath = "E:\\U-Shop.xml";

依照此模闆我們有c#代碼進行建立,方法代碼如下:

//生成xml 結構

        private static void GenerateXMLFIL(string XMLfilePath)

        {

            try

            {

                //執行個體化xml文檔

                XmlDocument myXmlDoc = new XmlDocument();

                //執行個體化一個根節點

                XmlElement rootElement = myXmlDoc.CreateElement("Teams");

                //把根節點添加到xml文檔中

                myXmlDoc.AppendChild(rootElement);

                //建立一個一級節點

                XmlElement fistLevelElement1 = myXmlDoc.CreateElement("Member");

                //設定屬性

                fistLevelElement1.SetAttribute("team", "U-Shop");

                fistLevelElement1.SetAttribute("Description", "U-Shop團隊");

                //将一級節點添加到根節點

                rootElement.AppendChild(fistLevelElement1);

                //建立二級節點

                XmlElement secondLevelElement11 = myXmlDoc.CreateElement("name");

                //設定二級節點的串聯值

                secondLevelElement11.InnerText = "靈動生活";

                //把二級節點添加到一級幾點

                fistLevelElement1.AppendChild(secondLevelElement11);

                XmlElement threeLevelElement12 = myXmlDoc.CreateElement("position");

                threeLevelElement12.InnerText = "planning";

                fistLevelElement1.AppendChild(threeLevelElement12);

                XmlElement secondLevelElement2 = myXmlDoc.CreateElement("Member");

                secondLevelElement2.SetAttribute("team", "U-Shop");

                secondLevelElement2.SetAttribute("Description", "U-Shop團隊");

                //添加到根節點

                rootElement.AppendChild(secondLevelElement2);

                XmlElement secondLevelElement21 = myXmlDoc.CreateElement("name");

                secondLevelElement21.InnerText = "藍藍海天";

                secondLevelElement2.AppendChild(secondLevelElement21);

                XmlElement threeLevelElement22 = myXmlDoc.CreateElement("position");

                threeLevelElement22.InnerText = "support";

                secondLevelElement2.AppendChild(threeLevelElement22);

                XmlElement secondLevelElement3 = myXmlDoc.CreateElement("Member");

                secondLevelElement3.SetAttribute("team", "U-Shop");

                secondLevelElement3.SetAttribute("Description", "U-Shop團隊");

                rootElement.AppendChild(secondLevelElement3);

                XmlElement secondLevelElement31 = myXmlDoc.CreateElement("name");

                secondLevelElement31.InnerText = "神舟龍";

                secondLevelElement3.AppendChild(secondLevelElement31);

                XmlElement threeLevelElement32 = myXmlDoc.CreateElement("position");

                threeLevelElement32.InnerText = "lean";

                secondLevelElement3.AppendChild(threeLevelElement32);

                //儲存,重要

                myXmlDoc.Save(XMLfilePath);

            }

            catch (Exception ex)

                Console.WriteLine(ex.ToString());

        }

下面的方法就是擷取已經建立好的xml檔案中資訊,方法代碼如下:

        //擷取xml資訊

        private static void GetXMLInformation(string XMLfilePath)

            //執行個體化一個xml文檔

            XmlDocument myXmlDoc = new XmlDocument();

            //加載xml文檔

            myXmlDoc.Load(XMLfilePath);

            //獲得第一個為Computers的根節點

            XmlNode rootNode = myXmlDoc.SelectSingleNode("Teams");

            //擷取根節點中串聯值

            string innertext = rootNode.InnerText.ToString();

            //擷取根節點雖有子節點結構

            string innerXmlInfo = rootNode.InnerXml.ToString();

            //擷取根節點在内的整個xml的結構

            string outXmlInfo = rootNode.OuterXml.ToString();

            //擷取根節點的所有自己點

            // }

            XmlNodeList firstLevelNodeList = rootNode.ChildNodes;

            //周遊所有子節點

            foreach (XmlNode node in firstLevelNodeList)

                string inner = node.InnerXml;

                string outx = node.OuterXml;

                //擷取所有子節點的屬性

                XmlAttributeCollection attributeCol = node.Attributes;

                //周遊自己點屬性

                foreach (XmlAttribute attri in attributeCol)

                {

                    //擷取每個節點屬性的key,value值

                    string name = attri.Name;

                    string value = attri.Value;

                    Console.WriteLine("{0}={1}", name, value);

                }

                //判斷子節點是否還有子節點

                if (node.HasChildNodes)

                {//如果有子節點則執行

                    //擷取子節點中的第一個孩子

                    XmlNode secondeLevelNode1 = node.FirstChild;

                    //得到第一個孩子的名稱

                    string name = secondeLevelNode1.Name;

                    string innetext = secondeLevelNode1.InnerText.ToString();

                    string outxml = secondeLevelNode1.OuterXml.ToString();

                    //獲得第一個孩子的串聯值

                    string innerxml = secondeLevelNode1.InnerXml.ToString();

                    Console.WriteLine("{0}={1}", name, innerxml);

                    XmlNode secondLevelNode2 = node.ChildNodes[1];

                    name = secondLevelNode2.Name;

                    innerxml = secondLevelNode2.InnerXml;

我們很容易獲得上邊代碼中紅色字型的值,即innertext=“靈動生活planning藍藍海天support神舟龍lean:“了解:根節點以下所有節點的值,innerXmlInfo =“

<Member team="U-Shop" Description="U-Shop團隊">

了解:除根節點标簽後,根節點包含的xml結構”, outXmlInfo   =”

了解:包含根節點标簽在内的xml結構“

innertext :可以把這個單詞分開進行了解,分開就是inner和text,inner就是裡面的意思,這裡我們可以了解為不包含本節點,即innertext所在節 點的子節點,text就是文本的意思,是以innertext不會出現标簽,整體了解就是innertext所在節點所包含的子節點的值;

  innerxml:同樣我們也可以把這個單詞拆分進行了解,分開就是inner和xml,inner就是裡面的意思,這裡我們可以了解為不包含本節點,即innerxml所在節點的子節點,xml 這裡可以認為是我們所寫的标簽,當然也包括它的屬性值,是以這裡了解就是innerxml所在節點所包含的子節點的标簽結構;

 outerxml:同樣我們也可以把這個單詞拆分進行了解,分開就是outer和xml,out就是外面的意思,這裡我們可以了解為包含本節點,即outerxml所在節點的子節點,xml 這裡可以認為是我們所寫的标簽,當然也包括它的屬性值,是以這裡了解就是outerxml所在節點以及所包含的子節點的标簽結構、屬性、值(包含所在節點);

本文轉自shenzhoulong  51CTO部落格,原文連結:http://blog.51cto.com/shenzhoulong/486880,如需轉載請自行聯系原作者