zoukankan      html  css  js  c++  java
  • OuterXml和InnerXml

    例如

    <bkk>
    <rp fe="few" >
    
    <fe>fff</fe>
    </rp>
    </bkk>
    对于fe这个元素,innerxml是fff,outerxml是<fe>fff</fe>。
    innerxml仅包括元素内容,outerxml是整个元素
    -------------------------------------------------------------------------------
    XML文件
    <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文件路径:

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

    建立XML文件:

    //生成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());
                }
    
            }

    一般还要加上声明,不然会出错:

    XmlDocument xmldoc = new XmlDocument();
                XmlDeclaration xmldecl = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null);
                xmldoc.AppendChild(xmldecl);
                XmlElement xmlelement;
                xmlelement = xmldoc.CreateElement(strRoot);//根节点
                xmldoc.AppendChild(xmlelement);

    读取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所在节点以及所包含的子节点的标签结构、属性、值(包含所在节点);

     
  • 相关阅读:
    899. Orderly Queue
    856. Score of Parentheses
    833. Find And Replace in String
    816. Ambiguous Coordinates
    770. Basic Calculator IV
    冒泡排序(Bubble Sort)
    C
    B
    A
    HDOJ-1391
  • 原文地址:https://www.cnblogs.com/herizai/p/6962735.html
Copyright © 2011-2022 走看看