原文:innerXml,outerXml,innerText的不同

昨天看到咱们园子里有一个仁兄写的关于xml的有关操作,在读的过程中,由于是初学者有不明白的地方就查资料,发现自己多innerXml,outerXml,innerXml的理解很不清楚,自己就在原有代码的上进行了部分修改(这不算侵权吧)。首先建立的xml的结构是这样子的,并命名为U-Shop:

<Teams>  <Member team="U-Shop" Description="U-Shop团队">    <name>灵动生活</name>    <position>planning</position>  </Member>  <Member team="U-Shop" Description="U-Shop团队">    <name>蓝蓝海天</name>    <position>support</position>  </Member>  <Member team="U-Shop" Description="U-Shop团队">    <name>神舟龙</name>    <position>lean</position>  </Member></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;                    Console.WriteLine("{0}={1}", name, innerxml);                                    }            }        }

我们很容易获得上边代码中红色字体的值,即innertext=“灵动生活planning蓝蓝海天support神舟龙lean:“理解:根节点以下所有节点的值,innerXmlInfo =“

<Member team="U-Shop" Description="U-Shop团队">    <name>灵动生活</name>    <position>planning</position>  </Member>  <Member team="U-Shop" Description="U-Shop团队">    <name>蓝蓝海天</name>    <position>support</position>  </Member>  <Member team="U-Shop" Description="U-Shop团队">    <name>神舟龙</name>    <position>lean</position>  </Member>

理解:除根节点标签后,根节点包含的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所在节点以及所包含的子节点的标签结构、属性、值(包含所在节点);

由于个人习惯,这里所写的”节点“皆是指xml中的”标签“,见谅!

源代码:下载

innerXml,outerXml,innerText的不同的更多相关文章

  1. xml文件格式说明

    转载自:http://www.cr173.com/html/10715_1.html 关于xml的有关操作,在读的过程中,由于是初学者有不明白的地方就查资料,发现自己多innerXml,outerXm ...

  2. .Net中XML,JSON的几种处理方式

    一.XML: 1.基本了解: xml,Extensible markup language可扩展标记语言,用于数据的传输或保存,特点,格式非常整齐数据清晰明了,并且任何语言都内置了xml分析引擎, 不 ...

  3. xml基础总结

    可扩展的标记语言(eXtensible Markup Language) 优点:容易读懂:格式标准任何语言都内置了XML分析引擎,不用单独进行文件分析引擎的编写. 用普通二进制传输数据的缺点,解析方式 ...

  4. OuterXml和InnerXml

    例如 <bkk> <rp fe="few" > <fe>fff</fe> </rp> </bkk> 对于fe ...

  5. innerxml and outerxml

    xml文件如下 <root> <a></a> <b></b> <c></c> <a></a> ...

  6. OuterXml和InnerXml(2)

    官方例子:https://msdn.microsoft.com/en-us/library/system.xml.xmlnode.outerxml.aspx using System; using S ...

  7. XmlNode中Value和InnerText的区别

    XmlNode中Value和InnerText的区别   这个问题我想很多人在使用.NET 操作 Xml 文档时都遇到过,先看一下MSDN里对这两个属性的解释: XmlNode.Value:获取或设置 ...

  8. 【JavaScript】innerHTML、innerText和outerHTML的用法区别

    用法: <div id="test">   <span style="color:red">test1</span> tes ...

  9. innerHTML和innerText的区别

    以<p id="example">welcome to <strong>JavaScript</strong> !!!</p>为例: ...

随机推荐

  1. iOS7,8 presentViewController 执行慢

    解决办法: 1, 使用GCD用主线程跳转 dispatch_async(dispatch_get_main_queue(), ^{ //跳转代码 ... }); 2, 召唤主线程, 使用perform ...

  2. CPU自制入门——笔记

    最近在看日本人的那本书<CPU自制入门>就开始自己捣鼓.把工程方到QuartusII 里面后发现编译不通过,总是提示找不到头文件.工程的目录架构是这个样子的 而.v文件中的.h 是这么包含 ...

  3. beep的控制程序

    参照艾米电子的程序进行改写的 //date : 2014,5,4 module for_beep ( clock , reset , out_beep ); input clock ,reset ; ...

  4. svn笔记4属性Properties

    我们已经详细讲述了Subversion存储和检索版本库中不同版本的文件和目录的细节,并且用了好几个章节来论述这个工具的基本功能.如果对于版本化的支持到此为止,从版本控制的角度来看Subversion已 ...

  5. mysql 从5.1升级到5.5.33 后 innodb 表出错 及 innodb表修复

    服务器使用的是mysql 5.1,了解到 5.5 系列的版本 innodb 的性能有很大提升,就想升级下.按照查到的步骤: http://www.myhack58.com/Article/sort09 ...

  6. 关于libgdx中UI控件的旋转和缩放的备忘

    最近遇到这样一个问题,定义了一个ImageButton后,想对按钮进行下旋转,结果setRotation(-90f),不起作用.后来在官网上找到了原因 关于UI控件的旋转 缩放官网上有这样一段话(链接 ...

  7. QQ音乐产品经理黄楚雄:产品与用户的情感联系

    QQ 音乐产品经理关于产品的一些感悟. 2014 年是 QQ 音乐的第十个产品年度,这十年我们跟用户一起见证了整个互联网音乐的发展.2011 年的 3 月 QQ 音乐公布了第一个 iPhone 平台的 ...

  8. 大整数乘法python3实现

    因为python具有无限精度的int类型,所以用python实现大整数乘法是没意义的,可是思想是一样的.利用的规律是:第一个数的第i位和第二个数大第j位相乘,一定累加到结果的第i+j位上,这里是从0位 ...

  9. ListBox控件

    主要介绍:自定义数据.绑定数据库数据 前台代码: <div> <asp:ListBox ID=" Width ="100px"> <asp: ...

  10. WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]

    原文:WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇] 在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy.WS-Tra ...