。内存中基于树的模型
。与基于流的模型相比,DOM的缺点是树模型需要的系统资源(主要是内存)很多。
3.1文档对象模型
。基于流的模型创建了内部临时结构,而DOM的基本结构是一个已进行全面分析的文档,它以树的形式驻留在内存中。
。每个XML文档都有一个根节点。
。DOM中有两个不同的结果:一个用于包含元素、注释、处理指令等;另一个用于包含特性。
。在ASP.NET中使用DOM不是很复杂。
3.2DOM的.NET类层次结构
常见的:
XMLNode
XMLNamedNodeMap
XMLNodeList
XMLAttribute
XMLDocument
XMLDocumentFragMent
XMLElement
XMLNode:
1. 属性:Attributes、ChildNodes、FirstNode、HasChildNodes、InnerText 、LastChild、Name、Value等
2. 方法:AppendChild、InsertAfter、InsertBefore、RemoveAll、RemoveChild、ReplaceChild、SelectNodes等
各种Insert-、Append-、Remove-方法可以一次一个层次地组合和分解DOM树
XMLNamedNodeMap
主要用于收集元素的特性。
1. 属性:唯一属性Count指定属性映射的节点数。
2. 方法:GetEnumerator、GetNamedLtem、Item、RemoveNamedItem和SetNamedItem
3. 枚举特性
String s = myNode.Attributes.GetNamedIem(“age”);//知道特性名字的情况下枚举
foreach(XmlAttribute attr in myNode.Attributes)
String s = attr.Name;//
for(int i=0;i<myNode.Attributes.Count;i++)
String s =myNode.Attributes.Item(i).Name;//
XMLNodeList
1. 属性:Count、ItemOf
2. 方法:GetEnumerator、Item
3. 遍历树
void SomeMethod()
{
XmlDocument doc = new XmlDocument();
doc.Load("Http://mysite//mydoc.xml");
Descend(doc.DocumentElement);
}
//深度优先
public void Descend(XmlNode node)
{
if (node.NodeType == XmlNodeType.Element)
{
for (int i = 0; i < node.ChildNodes.Count; i++)
{
//Do something
Descend(node.ChildNodes.Item(i));
}
}
else
//non-element nodes here
}
//广度优先
public void Traverse(XmlNode node)
{
XmlNode child;
//Do Something
child = node.FirstChild;
while (child != null)
{
Traverse(child);
child = child.NextSibling;
}
}
XMLDocument
可以执行DOM模型中所有外围结构的接口,还可以创建新节点
1. 构造函数:public XmlDocument(),public XmlDocument(XmlNameTable)
2. 属性:DocumentElement、DocumentType、Implementation、InnerXml、IsReadOnly、LocalName、Name、NameTable、NodeType、OwnerDocument、PreserveWhitespace和XmlResolver
3. 方法:Load、ImportNode、GetElementById、GetElementByTagName、CreateX等
其中X表示要创建的节点类型。
4. 事件:NodeChanged、NodeChanging,NodeInserted、NodeInserting、NodeRemoved、NodeRemoving
XmlDocumentFragment
是一个帮助性的使用类,用于创建文档片段。
1. 属性:InnerText、LocalName、Name、NodeType、OwnerDocument、ParentNode
2. 方法:CloneNode、WriteContentTo、WriteTo
XMLAttribute
除了XMLDocument和XMLElement,XMLAttribute是最常用的DOM类
1. 属性:BaseURL、InnerText、InnerXml、LocalName、Name、NamespaceURL、NodeType、OwnerDocument、OwnerElement、ParentNode、Prefix、Spcified和Value
2. 方法:CloneNode、WriteContentTo和WriteTo
XMLLinkedNode
。是一个抽象类
。包含用于XML结构的类而不是用于特性、实体和符号。如NextSibling、PreviousSibling。
XmlElement
元素是XML文档的核心。
1. 属性:Attributes、HasAttributes、InnerText、InnerXml、IsEmpty、LocalName、Name、NamespaceURL、NextSibling、NodeType、OwnerDocument和Prefix。
2. 方法:CloneNode、GetAttribute、GetAttributeNode、GetElementsByTagName、HasAttribute、RemoveAll、RemoveAllAttributes、RemoveAttribute、RemoveAttrivuteAt、RemoveAttributeNode、SetAttribute、SetAttributeNode、WriteContentTo、WriteTo