您的位置:首页 > Web前端 > Node.js

XML文档对象模型----使用XmlNodeReader

2006-12-06 19:16 701 查看

如何使用 XmlNodeReader

此示例阐释如何创建和使用 XmlNodeReader。XmlNodeReader 是一种读取器,可提供对 XmlNode 中的 XML 数据的快速、非缓存和只进的访问。它能够读取整个 XML DOM 树,或只从子树读取。然而,XmlNodeReader 不支持文档类型定义 (DTD) 或架构验证,因此不验证它读取的 XML。
此示例将 books.xml 加载到 XmlDocument 中,然后使用 XmlNodeReader 获取每个节点以及它们各自的值,以将这些值显示在屏幕上。





VB XmlNodeReader.aspx
[运行示例] | [查看源代码]
创建 XmlDocument 并将 books.xml 文件加载到其中后,该示例创建一个 XmlNodeReader,它可选择 XmlDocument 中的单个节点。该示例将此 XmlNodeReader 传递到 FormatXml 函数,该函数将节点数据输出到屏幕上。然后,该示例创建另一个 XmlNodeReader,它选择不同的节点以输出到屏幕上。

function doClick(index, numTabs, id) {
document.all("tab" + id, index).className = "tab";
for (var i=1; i

td.code {
padding:0,10,0,10;
border-style:solid;
border-width:1;
border-bottom:0;
border-top:0;
border-right:0;
border-color:cccccc;
background-color:ffffee
}
td.tab {
text-align:center;
font:8pt verdana;
width:15%;
padding:3,3,3,3;
border-style:solid;
border-width:1;
border-right:0;
border-color:black;
background-color:eeeeee;
cursor:hand
}
td.backtab {
text-align:center;
font: 8pt verdana;
width:15%;
padding:3,3,3,3;
border-style:solid;
border-width:1;
border-right:0;
border-color:black;
background-color:cccccc;
cursor:hand
}
td.space {
width:70%;
font: 8pt verdana;
padding:0,0,0,0;
border-style:solid;
border-bottom:0;
border-right:0;
border-width:1;
border-color:cccccc;
border-left-color:black;
background-color:white
}

XmlDocument myXmlDocument = new XmlDocument();
myXmlDocument.Load (arg);
...
XmlNodeReader myXmlNodeReader = new XmlNodeReader (myXmlDocument.SelectSingleNode("bookstore/book[3]"));
FormatXml (myXmlNodeReader);
...
myXmlNodeReader = new XmlNodeReader (myXmlDocument.SelectSingleNode("bookstore/book[2]"));
myXmlNodeReader.Read();
Console.WriteLine (myXmlNodeReader.ReadInnerXml());

Dim myXmlDocument as XmlDocument  = new XmlDocument()
myXmlDocument.Load (arg)
...
Dim myXmlNodeReader as XmlNodeReader  = new XmlNodeReader (myXmlDocument.SelectSingleNode("bookstore/book[3]"))
FormatXml (myXmlNodeReader)
...
myXmlNodeReader = new XmlNodeReader (myXmlDocument.SelectSingleNode("bookstore/book[2]"))
myXmlNodeReader.Read()
Console.WriteLine (myXmlNodeReader.ReadInnerXml())

C# VB
该部分示例仅使用 XmlNodeReader 的 Read 方法读取每个节点,然后根据节点类型,使用 Format 函数将节点输出到屏幕上。

private static void FormatXml (XmlNodeReader reader)
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.ProcessingInstruction:
Format (reader, "ProcessingInstruction");
break;
case XmlNodeType.DocumentType:
Format (reader, "DocumentType");
break;
case XmlNodeType.Document:
Format (reader, "Document");
break;
case XmlNodeType.Comment:
Format (reader, "Comment");
break;
case XmlNodeType.Element:
Format (reader, "Element");
while(reader.MoveToNextAttribute())
{
Format (reader, "Attribute");
}
break;
case XmlNodeType.Text:
Format (reader, "Text");
break;
case XmlNodeType.Whitespace:
Format (reader, "Whitespace");
break;
}
}
}
// Format the output
private static void Format(XmlNodeReader reader, String NodeType)
{
// Format the output
for (int i=0; i < reader.Depth; i++)
{
Console.Write('\t');
}
Console.Write(NodeType + "<" + reader.Name + ">" + reader.Value);
Console.WriteLine();
}

private sub FormatXml (reader as XmlNodeReader)
while (reader.Read())
select case reader.NodeType
case XmlNodeType.ProcessingInstruction:
Format (reader, "ProcessingInstruction")
case XmlNodeType.DocumentType:
Format (reader, "DocumentType")
case XmlNodeType.Document:
Format (reader, "Document")
case XmlNodeType.Comment:
Format (reader, "Comment")
case XmlNodeType.Element:
Format (reader, "Element")
while (reader.MoveToNextAttribute())
Format (reader, "Attribute")
end while
case XmlNodeType.Text:
Format (reader, "Text")
case XmlNodeType.Whitespace:
Format (reader, "Whitespace")
end select
end while
end sub
'Format the output
private sub Format (reader as XmlNodeReader, NodeType as String)
Dim value as String = System.String.Empty
Dim i as long
for i=0  to (reader.Depth - 1)
Console.Write(Chr(9))
Next
if (reader.HasValue)
value = reader.Value
end if
Console.WriteLine(NodeType & "<" & reader.Name & ">" + value)
end sub

C# VB

摘要

XmlNodeReader 是提供对 XmlNode 中的 XML 数据进行快速、非缓存和只进的访问的读取器。
因为也可使用 XmlDocument 中的任何 XmlNode 构造 XmlNodeReader,所以 XmlNodeReader 可提供只读取给定节点的子树的读取器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: