示的代碼演示了客戶端用XMLTextReadWriter類在讀操作的同時修改屬性值的優勢。在本期的msdn中提供了XMLTextReadWriter類的C#和VB源代碼下載(見本文開頭提供的鏈接)。
Figure 12 Changing Attribute Values
private void ApplyChanges(string nodeName, string attribName,
string oldVal, string newVal)
{
XMLTextReadWriter rw = new XMLTextReadWriter(InputFileName.Text,
OutputFileName.Text);
rw.WriteStartDocument(true, CommentText.Text);
// 手工修改根節點
rw.Writer.WriteStartElement(rw.Reader.LocalName);
// 開始修改屬性
// (可以修改更多節點的屬性)
rw.AddAttributeChange(nodeName, attribName, oldVal, newVal);
// 循環處理文檔
while(rw.Read())
{
switch(rw.NodeType)
{
case XMLNodeType.Element:
rw.Writer.WriteStartElement(rw.Reader.LocalName);
if (nodeName == rw.Reader.LocalName)
// 修改屬性
rw.WriteAttributes(nodeName);
else
// deep copy
rw.Writer.WriteAttributes(rw.Reader, false);
if (rw.Reader.IsEmptyElement)
rw.Writer.WriteEndElement();
break;
}
}
// Close the root tag
rw.Writer.WriteEndElement();
// Close the document and any internal resources
rw.WriteEndDocument();
}
XMLTextReadWriter類不僅可以讀XML文檔,也可以寫XML文檔。你可以它來讀XML文檔的內容,如果需要,你還可以用它來做一些基本的更新操作。基本的更新操作在這裡是指修改某個已存在的屬性的值或者某個節點的內容,又或者是增加一個新的屬性或節點。對於更復雜的操作,最好還是用XMLDOM分析器。
總結Reader和Writer是.NET Framework中處理XML數據的根本。它們提供了對所有XML數據訪問功能的原始的API。Reader像一個新的分析器類,它即有XMLDOM的強大,又有SAX的快速簡單。Writer為簡單的創建XML文檔而設計。雖然Reader和Writer都是.Net Framework中的一小塊,但是它們是相互獨立的API。在本文中,我們只討論了怎麼樣用Reader和Writer完成一些主要的工作, 介紹了驗證分析器的原理機制,並把Reader和writer整合在一個單獨的類中。上述所有的這些類都是輕量級的,類似於游標式的XMLDOM分析器。