innerXml,outerXml,innerText的不同

原文: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   =”

<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>

理解:包含根节点标签在内的xml结构“

   innertext :可以把这个单词分开进行理解,分开就是inner和text,inner就是里面的意思,这里我们可以理解为不包含本节点,即innertext所在节点的子节点,text就是文本的意思,所以innertext不会出现标签,整体理解就是innertext所在节点所包含的子节点的值;

  innerxml:同样我们也可以把这个单词拆分进行理解,分开就是inner和xml,inner就是里面的意思,这里我们可以理解为不包含本节点,即innerxml所在节点的子节点,xml 这里可以认为是我们所写的标签,当然也包括它的属性值,所以这里理解就是innerxml所在节点所包含的子节点的标签结构;

 outerxml:同样我们也可以把这个单词拆分进行理解,分开就是outer和xml,out就是外面的意思,这里我们可以理解为包含本节点,即outerxml所在节点的子节点,xml 这里可以认为是我们所写的标签,当然也包括它的属性值,所以这里理解就是outerxml所在节点以及所包含的子节点的标签结构、属性、值(包含所在节点);

 

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

 源代码:下载

 

时间: 2024-10-15 05:58:12

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

C#中使用XML——实现DOM

dom|xml 在前两篇文章中我们讨论了XML文件的读取和写入,但都是基于流模型的解决方案,今天我们就来谈谈在C#中如何实现DOM,DOM确实有它的不足,但在编程工作中它还是不可或缺的技术.下面我们来简单了解一下DOM的相关知识. DOM的全称是Document Object Model(文档对象模型),它是来自W3C的官方标准,它允许按照W3C标准W3C DOM Level1和W3C DOM Level2的规范所定义的规则,通过编程来读取,操纵和修改XML文档.DOM的工作方式是:首先将XML

Javascript教程:innerText属性在火狐实现的实例

文章简介:为firefox实现innerText属性. 很多代码写了又忘忘了又写,很浪费,所以决定养成做笔记的习惯. 知识点: 0.为什么要innerText?因为安全问题 1.为firefox dom模型扩展属性 2.currentStyle属性可以取得实际的style状态 3.IE实现innerText时考虑了display方式,如果是block则加换行 4.为什么不用textContent?因为textContent没有考虑元素的display方式,所以不完全与IE兼容 <html>&l

innerText,innerHTML的用法

innerText,outerText,innerHTML,outerHTML 这次我们要使用另一些对象属性对来实现动态改变文本,它们就是:innerText,outerText,innerHTML,outerHTML,千万要注意它们的大小写,因为错一点您就得不到预期的效果了.这是全新的方法,当您掌握它以后将可随心所欲的设计动态内容了,不可错过哦!例12 动态改变文本和Html <html> <head> <title>DHtml举例12</title> &

javascript中innerText和innerHTML属性用法实例分析

  本文实例讲述了javascript中innerText和innerHTML属性用法.分享给大家供大家参考.具体分析如下: 几乎所有DOM元素都有innerText,innertHTML属性(注意大小写),分别是元素标签内 的文本表示形式和HTML源代码,这两个属性是可读可写的 innerHTML也可以取代createElement,属于简单,粗放型,后果自负的创建 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解

  这篇文章主要介绍了javascript中的innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解,都是个人经验的总结,分享给大家,希望大家能够喜欢. innerHTML属性用来读取或设置某个节点内的HTML代码. outerHTML属性用来读取或设置HTML代码时,会把节点本身包括在内. textContent属性用来读取或设置节点包含的文本内容. innerText属性和outerText属性在读取元素节点的文本内容时,得到的值是不一样的

innerText 使用示例

 在元素间的文本就是通过对象.innerText,下面有个不错的示例,感兴趣的朋友可以参考下 代码如下: <html>  <head>  <script language = "javascript" type = "text/javascript">  function showTime(){  //在元素间的文本就是通过 对象 .innerText  document.getElementById("mytime&q

JS魔法堂:被玩坏的innerHTML、innerText、textContent和value属性

一.前言   由于innerText并非W3C标准属性,因此我们无法在FireFox中使用它,一般情况下我们可以使用textContent来代替,但它两者是否 就能完全等同呢?在坑爹的表单元素(如input.textarea等)中表现是否依旧诡异呢?文本将记录一些实验结果,避免日后被玩坏.   二.innerHTML   由于innerText和textContent均为对innerHTML内容作不同的处理而成,因此我们需要先明确innerHTML属性的特点.   赋值操作:先对值内容进行模式匹

InnerHtml和InnerText的区别分析_基础知识

最详细的解答可以参见MSDN InnerTexthttp://msdn.microsoft.com/zh-cn/library/system.web.ui.htmlcontrols.htmlcontainercontrol.innertext.aspx InnerHtmlhttp://msdn.microsoft.com/zh-cn/library/system.web.ui.htmlcontrols.htmlcontainercontrol.innerhtml.aspx 简要解释: Inner

textContent在Firefox下与innerText等效的属性_javascript技巧

在IE和Opear下,DOM对象支持innerText属性,可以很方便的去除HTML标签. 但在Firefox不支持该属性,好在FF下的DOM对象支持textContent,该属性与innerText等效. 演示实例: <p id="TestObj">Hi,I'm <strong>cnlei</strong>.Welcome to my homepage:<a href="http://www.cnlei.com">h