博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
验证innerXml,outerXml,innerText的不同
阅读量:5730 次
发布时间:2019-06-18

本文共 5785 字,大约阅读时间需要 19 分钟。

昨天看到关于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所在节点以及所包含的子节点的标签结构、属性、值(包含所在节点);

本文转自shenzhoulong  51CTO博客,原文链接:http://blog.51cto.com/shenzhoulong/486880,如需转载请自行联系原作者

你可能感兴趣的文章
模板 读入挂!
查看>>
SharePoint 读取 Site Columns 的数据并绑定到DropdownList
查看>>
Python中的对象行为与特殊方法(二)类型检查与抽象基类
查看>>
使用 axios 详解
查看>>
通信基站(dfs回溯,思维)
查看>>
nginx web加密访问
查看>>
iOS - Regex 正则表达式
查看>>
SYS_CONTEXT函数返回IP地址的一些误解
查看>>
第 68 章 Logical Volume Manager (LVM)
查看>>
膝盖中了一箭之康复篇-第八个月暨2月份目标总结
查看>>
IPA提交APPStore问题记录(一)
查看>>
有利于seo优化的网站地图不能取巧
查看>>
快照产品体验优化
查看>>
ASCII
查看>>
50天!3家!共享单车终于开始了“大逃亡”
查看>>
ibatis SqlMap not found
查看>>
Android SD卡创建文件和文件夹失败
查看>>
Ubuntu 14.04 vsftp refusing to run with writable root inside chroot问题解决方法
查看>>
Intellij IDEA远程调试tomcat
查看>>
hadoop的学习论坛
查看>>