比如以下程序段,
topM是XmlNodeList的实例
但是在foreach中 怎么定义了element遍历nodes?
新手,请大侠释疑,谢谢
XmlNodeList topM=xmldoc.DocumentElement.ChildNodes;
foreach(XmlElement element in topM)
{
if(element.Name.ToLower()=="appsettings")
{
....
}
......
}
10 个解决方案
#1
从结构上讲.XmlElement是XmlNode 的派生类
XmlNode 是 DOM 的 .NET 实现中的基类。
XmlNode 是 DOM 的 .NET 实现中的基类。
#2
XmlNode 》XmlElement
#3
XmlNode 是抽象的
public abstract class XmlNode : ICloneable,
IEnumerable, IXPathNavigable
XmlElement 类
表示一个元素。
public class XmlElement : XmlLinkedNode
System..::.Object
System.Xml..::.XmlNode
System.Xml..::.XmlLinkedNode
System.Xml..::.XmlElement
public abstract class XmlNode : ICloneable,
IEnumerable, IXPathNavigable
XmlElement 类
表示一个元素。
public class XmlElement : XmlLinkedNode
System..::.Object
System.Xml..::.XmlNode
System.Xml..::.XmlLinkedNode
System.Xml..::.XmlElement
#4
XmlNode,是一个节点,一个节点有很多种类型。而XmlElement是一个xml元素,简单说就是类似于<element></element>这样有标签的结构。XmlElement从XmlNode中继承,拥有更多的方法和属性可用。XmlNode是老子,XmlElement是其中一个儿子。
给你摘一段MSDN上的文字吧,这些是XmlNode的所有可能类型,其中Element就是XmlElement了。
给你摘一段MSDN上的文字吧,这些是XmlNode的所有可能类型,其中Element就是XmlElement了。
None 如果未调用 Read 方法,则由 XmlReader 返回。
Element 元素(例如,<item>)。
Attribute 属性(例如,id='123')。
Text 节点的文本内容。
CDATA CDATA 节(例如,<![CDATA[my escaped text]]>)。
EntityReference 实体引用(例如,#)。
Entity 实体声明(例如,<!ENTITY...>)。
ProcessingInstruction 处理指令(例如,<?pi test?>)。
Comment 注释(例如,<!-- my comment -->)。
Document 作为文档树的根的文档对象提供对整个 XML 文档的访问。
DocumentType 由以下标记指示的文档类型声明(例如,<!DOCTYPE...>)。
DocumentFragment 文档片段。
Notation 文档类型声明中的表示法(例如,<!NOTATION...>)。
Whitespace 标记间的空白。
SignificantWhitespace 混合内容模型中标记间的空白或 xml:space="preserve" 范围内的空白。
EndElement 末尾元素标记(例如,</item>)。
EndEntity 由于调用 ResolveEntity 而使 XmlReader 到达实体替换的末尾时返回。
XmlDeclaration XML 声明(例如,<?xml version='1.0'?>)。
#5
XMLNode是基类谁都知道,最关键的是
XmlElement只读取元素节点
而xmlnode属性节点,注释节点,文本节点,元素节点(最大的区别其实就是多了个注释节点读取,一般程序是不回去读取注释的)
下面内容为转载:
今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement。这两个类的功能极其类似(因为我们一般都是在对Element节点进行操作)。上网搜罗了半天,千篇一律的答案。永远说不到重点,有些人回答又特别含糊,无奈之下,自己设断点尝试对比效果,现在总结如下:
1、通过继承关系XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElement是XmlNode的子类。我们知道子类继承了父类所有的属性和方法,因此,XmlNode所拥有的方法和属性,在XmlElement类中也是可以使用的。
2、XmlElement是特殊的XmlNode类,Xml节点有多种类型:属性节点、注释节点、文本节点、元素节点等。也就是XmlNode是这多种节点的统称。但是XmlElement专门指的就是元素节点。
3、XmlElement是具现类,可以直接实例化,而XmlNode是抽象类,必须通过XmlDocument实例通过CreateNode创建。
4、XmlElement拥有众多对Attribute的操作方法,可以方便的对其属性进行读写操作(XmlNode也可以通过Attributes属性获取属性列表)。
5、在网上看到有人这么评论这两个类的区别:XmlNode包含子节点,XmlElement只包含属性及其本身不含有子节点。但是我通过代码测试,发现即使是XmlElement,也可以通过ChildNodes来获取子节点列表。虽然在断点中断模式下,我并没有发现XmlElement有ChildNodes属性。举例如下:
//是XmlNode也是XmlElement,但是img以及aspnet.jpg只是XmlNode
//既是XmlNode 也是XmlElement
C# //只是XmlNode
也就是元素节点可以相应转换为XmlElement,这样既可以使用XmlNode的功能,也可以使用它特有的对属性的操作方法。
任意节点都可以使用XmlNode,因为XmlNode是所有Node的父类。
这只是我个人试验后的戳见,有不对的地方,或者是有需要补充的地方希望前辈们指正。
XmlElement只读取元素节点
而xmlnode属性节点,注释节点,文本节点,元素节点(最大的区别其实就是多了个注释节点读取,一般程序是不回去读取注释的)
下面内容为转载:
今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement。这两个类的功能极其类似(因为我们一般都是在对Element节点进行操作)。上网搜罗了半天,千篇一律的答案。永远说不到重点,有些人回答又特别含糊,无奈之下,自己设断点尝试对比效果,现在总结如下:
1、通过继承关系XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElement是XmlNode的子类。我们知道子类继承了父类所有的属性和方法,因此,XmlNode所拥有的方法和属性,在XmlElement类中也是可以使用的。
2、XmlElement是特殊的XmlNode类,Xml节点有多种类型:属性节点、注释节点、文本节点、元素节点等。也就是XmlNode是这多种节点的统称。但是XmlElement专门指的就是元素节点。
3、XmlElement是具现类,可以直接实例化,而XmlNode是抽象类,必须通过XmlDocument实例通过CreateNode创建。
4、XmlElement拥有众多对Attribute的操作方法,可以方便的对其属性进行读写操作(XmlNode也可以通过Attributes属性获取属性列表)。
5、在网上看到有人这么评论这两个类的区别:XmlNode包含子节点,XmlElement只包含属性及其本身不含有子节点。但是我通过代码测试,发现即使是XmlElement,也可以通过ChildNodes来获取子节点列表。虽然在断点中断模式下,我并没有发现XmlElement有ChildNodes属性。举例如下:
//是XmlNode也是XmlElement,但是img以及aspnet.jpg只是XmlNode
//既是XmlNode 也是XmlElement
C# //只是XmlNode
也就是元素节点可以相应转换为XmlElement,这样既可以使用XmlNode的功能,也可以使用它特有的对属性的操作方法。
任意节点都可以使用XmlNode,因为XmlNode是所有Node的父类。
这只是我个人试验后的戳见,有不对的地方,或者是有需要补充的地方希望前辈们指正。
#6
foreach(XmlElement element in topM)
不要这么干,不安全的
foreach(XmlNode element in topM)
XmlNode是所有xml节点的抽象父类,xml的各种节点类型都是继承他的
如果你那个 xmlnodelist里有个非xmlelement你的程序就出错了
不要这么干,不安全的
foreach(XmlNode element in topM)
XmlNode是所有xml节点的抽象父类,xml的各种节点类型都是继承他的
如果你那个 xmlnodelist里有个非xmlelement你的程序就出错了
#7
Xml是由若干 节点(Node)组成的。元素(Element)是节点的一种。
<Book Name="C#高级编程">
<Price>95</Price>
</Book>
节点有以下几种:
1.元素(Element)
开标记和闭标记,以及他们之间的所有数据称为元素。如上例中的Book和Price
2.特性(Attribute)
上例中的Name="C#高级编程"
3.文本节点(TextNode)
上面的 95
4.注释
<Book Name="C#高级编程">
<Price>95</Price>
</Book>
节点有以下几种:
1.元素(Element)
开标记和闭标记,以及他们之间的所有数据称为元素。如上例中的Book和Price
2.特性(Attribute)
上例中的Name="C#高级编程"
3.文本节点(TextNode)
上面的 95
4.注释
#8
真是太感谢楼上各位了,看懂了!
csdn真是能学到很多东西啊
csdn真是能学到很多东西啊
#9
node不只包含element
#10
来晚了
#1
从结构上讲.XmlElement是XmlNode 的派生类
XmlNode 是 DOM 的 .NET 实现中的基类。
XmlNode 是 DOM 的 .NET 实现中的基类。
#2
XmlNode 》XmlElement
#3
XmlNode 是抽象的
public abstract class XmlNode : ICloneable,
IEnumerable, IXPathNavigable
XmlElement 类
表示一个元素。
public class XmlElement : XmlLinkedNode
System..::.Object
System.Xml..::.XmlNode
System.Xml..::.XmlLinkedNode
System.Xml..::.XmlElement
public abstract class XmlNode : ICloneable,
IEnumerable, IXPathNavigable
XmlElement 类
表示一个元素。
public class XmlElement : XmlLinkedNode
System..::.Object
System.Xml..::.XmlNode
System.Xml..::.XmlLinkedNode
System.Xml..::.XmlElement
#4
XmlNode,是一个节点,一个节点有很多种类型。而XmlElement是一个xml元素,简单说就是类似于<element></element>这样有标签的结构。XmlElement从XmlNode中继承,拥有更多的方法和属性可用。XmlNode是老子,XmlElement是其中一个儿子。
给你摘一段MSDN上的文字吧,这些是XmlNode的所有可能类型,其中Element就是XmlElement了。
给你摘一段MSDN上的文字吧,这些是XmlNode的所有可能类型,其中Element就是XmlElement了。
None 如果未调用 Read 方法,则由 XmlReader 返回。
Element 元素(例如,<item>)。
Attribute 属性(例如,id='123')。
Text 节点的文本内容。
CDATA CDATA 节(例如,<![CDATA[my escaped text]]>)。
EntityReference 实体引用(例如,#)。
Entity 实体声明(例如,<!ENTITY...>)。
ProcessingInstruction 处理指令(例如,<?pi test?>)。
Comment 注释(例如,<!-- my comment -->)。
Document 作为文档树的根的文档对象提供对整个 XML 文档的访问。
DocumentType 由以下标记指示的文档类型声明(例如,<!DOCTYPE...>)。
DocumentFragment 文档片段。
Notation 文档类型声明中的表示法(例如,<!NOTATION...>)。
Whitespace 标记间的空白。
SignificantWhitespace 混合内容模型中标记间的空白或 xml:space="preserve" 范围内的空白。
EndElement 末尾元素标记(例如,</item>)。
EndEntity 由于调用 ResolveEntity 而使 XmlReader 到达实体替换的末尾时返回。
XmlDeclaration XML 声明(例如,<?xml version='1.0'?>)。
#5
XMLNode是基类谁都知道,最关键的是
XmlElement只读取元素节点
而xmlnode属性节点,注释节点,文本节点,元素节点(最大的区别其实就是多了个注释节点读取,一般程序是不回去读取注释的)
下面内容为转载:
今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement。这两个类的功能极其类似(因为我们一般都是在对Element节点进行操作)。上网搜罗了半天,千篇一律的答案。永远说不到重点,有些人回答又特别含糊,无奈之下,自己设断点尝试对比效果,现在总结如下:
1、通过继承关系XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElement是XmlNode的子类。我们知道子类继承了父类所有的属性和方法,因此,XmlNode所拥有的方法和属性,在XmlElement类中也是可以使用的。
2、XmlElement是特殊的XmlNode类,Xml节点有多种类型:属性节点、注释节点、文本节点、元素节点等。也就是XmlNode是这多种节点的统称。但是XmlElement专门指的就是元素节点。
3、XmlElement是具现类,可以直接实例化,而XmlNode是抽象类,必须通过XmlDocument实例通过CreateNode创建。
4、XmlElement拥有众多对Attribute的操作方法,可以方便的对其属性进行读写操作(XmlNode也可以通过Attributes属性获取属性列表)。
5、在网上看到有人这么评论这两个类的区别:XmlNode包含子节点,XmlElement只包含属性及其本身不含有子节点。但是我通过代码测试,发现即使是XmlElement,也可以通过ChildNodes来获取子节点列表。虽然在断点中断模式下,我并没有发现XmlElement有ChildNodes属性。举例如下:
//是XmlNode也是XmlElement,但是img以及aspnet.jpg只是XmlNode
//既是XmlNode 也是XmlElement
C# //只是XmlNode
也就是元素节点可以相应转换为XmlElement,这样既可以使用XmlNode的功能,也可以使用它特有的对属性的操作方法。
任意节点都可以使用XmlNode,因为XmlNode是所有Node的父类。
这只是我个人试验后的戳见,有不对的地方,或者是有需要补充的地方希望前辈们指正。
XmlElement只读取元素节点
而xmlnode属性节点,注释节点,文本节点,元素节点(最大的区别其实就是多了个注释节点读取,一般程序是不回去读取注释的)
下面内容为转载:
今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement。这两个类的功能极其类似(因为我们一般都是在对Element节点进行操作)。上网搜罗了半天,千篇一律的答案。永远说不到重点,有些人回答又特别含糊,无奈之下,自己设断点尝试对比效果,现在总结如下:
1、通过继承关系XmlElement继承自XmlLinkedNode又继承自XmlNode类,由此可知XmlElement是XmlNode的子类。我们知道子类继承了父类所有的属性和方法,因此,XmlNode所拥有的方法和属性,在XmlElement类中也是可以使用的。
2、XmlElement是特殊的XmlNode类,Xml节点有多种类型:属性节点、注释节点、文本节点、元素节点等。也就是XmlNode是这多种节点的统称。但是XmlElement专门指的就是元素节点。
3、XmlElement是具现类,可以直接实例化,而XmlNode是抽象类,必须通过XmlDocument实例通过CreateNode创建。
4、XmlElement拥有众多对Attribute的操作方法,可以方便的对其属性进行读写操作(XmlNode也可以通过Attributes属性获取属性列表)。
5、在网上看到有人这么评论这两个类的区别:XmlNode包含子节点,XmlElement只包含属性及其本身不含有子节点。但是我通过代码测试,发现即使是XmlElement,也可以通过ChildNodes来获取子节点列表。虽然在断点中断模式下,我并没有发现XmlElement有ChildNodes属性。举例如下:
//是XmlNode也是XmlElement,但是img以及aspnet.jpg只是XmlNode
//既是XmlNode 也是XmlElement
C# //只是XmlNode
也就是元素节点可以相应转换为XmlElement,这样既可以使用XmlNode的功能,也可以使用它特有的对属性的操作方法。
任意节点都可以使用XmlNode,因为XmlNode是所有Node的父类。
这只是我个人试验后的戳见,有不对的地方,或者是有需要补充的地方希望前辈们指正。
#6
foreach(XmlElement element in topM)
不要这么干,不安全的
foreach(XmlNode element in topM)
XmlNode是所有xml节点的抽象父类,xml的各种节点类型都是继承他的
如果你那个 xmlnodelist里有个非xmlelement你的程序就出错了
不要这么干,不安全的
foreach(XmlNode element in topM)
XmlNode是所有xml节点的抽象父类,xml的各种节点类型都是继承他的
如果你那个 xmlnodelist里有个非xmlelement你的程序就出错了
#7
Xml是由若干 节点(Node)组成的。元素(Element)是节点的一种。
<Book Name="C#高级编程">
<Price>95</Price>
</Book>
节点有以下几种:
1.元素(Element)
开标记和闭标记,以及他们之间的所有数据称为元素。如上例中的Book和Price
2.特性(Attribute)
上例中的Name="C#高级编程"
3.文本节点(TextNode)
上面的 95
4.注释
<Book Name="C#高级编程">
<Price>95</Price>
</Book>
节点有以下几种:
1.元素(Element)
开标记和闭标记,以及他们之间的所有数据称为元素。如上例中的Book和Price
2.特性(Attribute)
上例中的Name="C#高级编程"
3.文本节点(TextNode)
上面的 95
4.注释
#8
真是太感谢楼上各位了,看懂了!
csdn真是能学到很多东西啊
csdn真是能学到很多东西啊
#9
node不只包含element
#10
来晚了