The System.Xml Namespace

王朝asp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

The System.Xml Namespace

You'll use the System.Xml namespace for processing XML data. This namespace

supports an ever-expanding host of XML standards, such as the following:

XML 1.0

Namespaces

Schemas

XSL/T

SOAP 1.1

The System.Xml namespace contains classes that represent the various XML

elements, similar to the objects provided by the MSXML library for Visual

Basic 6.0 developers. For example, you'll find an XmlDocument class, an

XmlEntity class, and an XmlNode class. You can also use XmlValidatingReader

in order to read XML and validate it against a Document Type Definition

(DTD), XML Data Reduced (XDR) schema, or an XML Schema Definition (XSD).

The System.Xml namespace includes reader and writer classes that provide

fast, forward-only reading and writing of XML streams. Back in the

System.Data discussion, you learned about the DataReader class, which is

used for fast forward-only data access. XmlTextReader provides the same

basic functionality against an XML stream.

When you use a reader object to read XML, you can use properties of the

reader to determine each node type and act accordingly. A writer class has

methods such as WriteCData, WriteDocType, and WriteNode in order to create

an XML document, element by element.

A System.Xml Example

The example in Listing 4.5 combines several of the namespaces covered in

this chapter. First, it uses System.Data classes to read data from SQL

Server. Next, it uses System.IO classes to output that data into an XML

file. Finally, it reopens the original XML file and uses System.Xml to read

the contents of the file and copy the data into a text box. Here's the code:

NOTE

More node types are possible when reading in an XML document than are shown

in the Select Case statement. However, for brevity, the number of types

examined is small.

Listing 4.5 Use an XmlTextReader Class to Parse an XML Document

Imports System.IO

Imports System.XML

Imports System.Text

Imports System.Data.OleDb

Private Sub XMLWrite()

Dim strConn As String

Dim strSQL As String

Dim strName As String

Dim strXML As String

Dim sw As StreamWriter

Dim sr As XmlTextReader

Dim sb As New StringBuilder(256)

Dim da As OleDbDataAdapter

Dim ds As DataSet

strConn = "Provider=sqloledb;" & _

"Data Source=(local);" & _

"Initial Catalog=Northwind;" & _

"User ID=sa"

strSQL = "SELECT ProductID, ProductName FROM Products"

da = New OleDbDataAdapter(strSQL, strConn)

ds = New DataSet()

da.Fill(ds)

strName = "c:\test.xml"

sw = File.CreateText(strName)

sw.WriteLine(ds.GetXml)

sw.Close()

sr = New XmlTextReader(strName)

sr.WhitespaceHandling = WhitespaceHandling.None

' Parse the file and display each of the nodes.

While sr.Read()

Select Case sr.NodeType

Case XmlNodeType.Element

sb.AppendFormat("<{0}>", sr.Name)

Case XmlNodeType.Text

sb.Append(sr.Value)

Case XmlNodeType.XmlDeclaration

sb.Append("<?xml version='1.0'?>")

Case XmlNodeType.Document

Case XmlNodeType.DocumentType

sb.AppendFormat("<!DOCTYPE {0}[{1}]", _

sr.Name, sr.Value)

Case XmlNodeType.EndElement

sb.AppendFormat("</{0} >", sr.Name)

End Select

End While

txtXML.Text = sb.ToString()

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航