DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> 從基本應用實例快速步入XML編程世界
從基本應用實例快速步入XML編程世界
編輯:XML詳解     
本文介紹3個XML的基本應用實例,旨在帶領你快速步入XML編程世界。實例包括:在.Net中使用XML、讀取XML文件,插入數據到XML文檔中。

  在.Net中使用XML
  如果使用過MSXML3,那麼在.NET應用程序中使用XML將是一個相當簡單的過程。即時沒有接觸過MSXML3,也不要緊,你會發現使用.Net平台提供的相關類也是很容易的一件事情。

  有兩種主要API可用於訪問建立在XML文檔中的數據,它們包括只向前的無緩沖存取以及隨機存取,而且自始至終都使用到文檔對象模型DOM。有關這2個API的類位於System.XML集合中。

  如果要快速有效地訪問XML文檔中的數據,就需要使用XmlTextReader類。這個類采取“拉”模式處理方式,要比簡單XML API(SAX)中的“推”模式處理方式優越許多。使用XmlTextReader類之前首先要引用System.XML集合,在C#中是使用“using”關鍵字來引用,在Visual Basic中則是使用“imports”關鍵字。引用了集合後,就可以象下面的代碼所示開始例示讀操作了:

XmlTextReader reader = new XmlTextReader(pathToXMLDoc);
int elementCount = 0;
while (reader.Read()) {
if (reader.NodeType == XMLNodeType.Element) {
elementCount++;
}
}


  XmlTextReader類中有幾個不同的構造器,上面所示的負責接收一個XML文件的路徑作為字符串參數。

  雖然只向前的“拉”模式處理相當有效率,但它卻是只讀的,所以不能允許執行插入、刪除或者更新XML文檔節點的操作。當需要對XML文檔施加更多的控制並需要更大的靈活性時,我們可以看一看文檔對象模型DOM。DOM API的功能將XML文檔中的每一個節點裝載到一個樹形結構中,看起來就象是一個“家譜”。內存中有了這個結構,隨機存取XML文檔中的不同節點就變得可行。

  開始創建DOM樹形結構前,首先引用System.Xml集合,然後例示XMLDocument類:

XmlDocument xmlDoc = new XMLDocument();
xmlDoc.Load(pathToXMLDoc);

XmlNode root = XMLDoc.DocumentElement;


  通過使用XmlDocument類中的相關方法,在樹形結構中添加節點的操作可以很容易地完成。下面的例子演示了如何從一個文件中裝載XML,然後在根節點root下添加一個子元素以及它的相關屬性:

XmlDocument xmlDoc = new XMLDocument();
XmlDoc.Load(pathToXMLDoc);
XmlElement root = XMLDoc.DocumentElement;
XMLElement newNode = doc.CreateElement("newNode");
newNode.SetAttribute("id","1");
root.AppendChild(newNode);


  以上代碼執行後,將產生下面的XML文檔:

<?XML version="1.0"?>
<root>
<newNode id="1"/>
</root>


  當需要將包含XML的字符串裝載進DOM中時,可以使用XmlDocument類的LoadXml()方法。裝載進去後,就可以按照下面的方式操作XML:

string myXML = "<root><someNode>Hello</someNode></root>";
XmlDocument xmlDoc = new XMLDocument();
xmlDoc.LoadXml(myXML);
//....manipulation or reading of the nodes can occur here


  除了以上幾種,在System.XML集合中還有多種其他類可用於執行不同的任務。上面的介紹僅僅是淺嘗則止,大量的應用還需要更多的練習。

  讀取XML文件
  下面介紹如何使用XmlTextReader類讀取XML文檔,並將數據顯示輸出。

  System.XML名稱空間中定義了兩個類-XmlReader與XmlTextReader,其中XmlTextReader類來源於XmlReader類,而XmlTextReader類就可以用於讀取XML文檔,這個文檔的Read函數將讀取文檔內容,直到節點尾部。
以下是具體的實現步驟:

  1、引用名稱空間
  因為相關XML的類是在System.XML名稱空間中定義的,所以第一件事情就是引用這個名稱空間:

using System.XML;


  2、打開XML文檔
  XmlTextReader類的構造器可用於打開一個XML文件。本例程的XML文件叫做xmltest.xml,位於C:\temp目錄下。打開文件c:\temp\xmltest.XML的命令如下:

XmlTextReader reader = new XmlTextReader("C:\\temp\\xmltest.XML");



  3、讀取數據
  讀取XML文件的數據,可以使用XMLTextReader類的Read方法:

while ( reader.Read() )

{
Console.WriteLine(reader.Name);
}



  4、完整執行代碼readXML.cs

namespace WriteToXML
{
using System;
using System.XML;
/// <summary>
/// Summary description for Class1.
/// </summary>
public class Class1
{
public Class1()
{

}
public static int Main(string[] args)
{
try
{
XmlTextWriter writer = new XmlTextWriter("C:\\temp\\xmltest.XML", null);
writer.WriteStartDocument();
writer.WriteComment("Commentss: XMLWriter Test Program");
writer.WriteProcessingInstrUCtion("Instruction","Person Record");
writer.WriteStartElement("p", "person", "urn:person");
writer.WriteStartElement("LastName","");
writer.WriteString("Chand");
writer.WriteEndElement();
writer.WriteStartElement("FirstName","");
writer.WriteString("Chand");
writer.WriteEndElement();
writer.WriteElementInt16("age","", 25);
writer.WriteEndDocument();
}
catch (Exception e)
{
Console.WriteLine ("Exception: {0}", e.ToString());
}

return 0;
}
}
}


  插入數據到XML文檔中
  要實現將XML數據插入到一個現存文檔或者一個新文檔中的目的,可以使用XmlNode類和XMLDocument類。具體的實現步驟如下:

  1、引用名稱空間
  因為相關XML的類是在System.XML名稱空間中定義的,所以第一件事情就是引用這個名稱空間:

using System.XML;


  2、裝載XML到文檔中
  我們可以使用XmlDocument的LoadXml方法將XML數據裝載到一個文檔中,或者是裝載一個現存的XML文檔。下面的代碼裝載XML數據到文檔中:

XmlDocument doc = new XMLDocument();
doc.LoadXml("<XMLFile>" +

" <SomeData>Old Data</SomeData>" +
"</XMLFile>");


  3、插入XML數據
  下面的代碼將XML數據插入到文件中,然後保存為InsertedDoc.XML:

try
{
XMLNode currNode;
XmlDocument doc = new XMLDocument();
doc.LoadXml("<XMLFile>" +
" <SomeData>Old Data</SomeData>" +
"</XMLFile>");
XMLDocumentFragment docFrag = doc.CreateDocumentFragment();
docFrag.InnerXML="<Inserted>" +
" <NewData>Inserted Data</NewData>" +
"</Inserted>";
// insert the availability node into the document
currNode = doc.DocumentElement.FirstChild;
currNode.InsertAfter(docFrag, currNode.LastChild);
//save the output to a file
doc.Save("InsertedDoc.XML");
}
catch (Exception e)
{
Console.WriteLine ("Exception: {0}", e.ToString());
}


  代碼執行後,新文檔的內容如下:

- <XMLFile>
- <SomeData>
Old Data
- <Inserted>
<NewData>Inserted Data</NewData>
</Inserted>
</SomeData>
</XMLFile>

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved