在.NET Framework中簡(jiǎn)單處理XML數(shù)據(jù)(5-2)
發(fā)表時(shí)間:2024-06-10 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]圖十二所示的代碼演示了客戶端用XmlTextReadWriter類在讀操作的同時(shí)修改屬性值的優(yōu)勢(shì)。在本期的msdn中提供了XmlTextReadWriter類的C#和VB源代碼下載(見(jiàn)本文開(kāi)頭提供的鏈接)。 Figure 12 Changing Attribute Values private...
圖十二所示的代碼演示了客戶端用XmlTextReadWriter類在讀操作的同時(shí)修改屬性值的優(yōu)勢(shì)。在本期的msdn中提供了XmlTextReadWriter類的C#和VB源代碼下載(見(jiàn)本文開(kāi)頭提供的鏈接)。
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);
// 手工修改根節(jié)點(diǎn)
rw.Writer.WriteStartElement(rw.Reader.LocalName);
// 開(kāi)始修改屬性
// (可以修改更多節(jié)點(diǎn)的屬性)
rw.AddAttributeChange(nodeName, attribName, oldVal, newVal);
// 循環(huán)處理文檔
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文檔,也可以寫(xiě)XML文檔。你可以它來(lái)讀XML文檔的內(nèi)容,如果需要,你還可以用它來(lái)做一些基本的更新操作;镜母虏僮髟谶@里是指修改某個(gè)已存在的屬性的值或者某個(gè)節(jié)點(diǎn)的內(nèi)容,又或者是增加一個(gè)新的屬性或節(jié)點(diǎn)。對(duì)于更復(fù)雜的操作,最好還是用XMLDOM分析器。
總結(jié)Reader和Writer是.NET Framework中處理XML數(shù)據(jù)的根本。它們提供了對(duì)所有XML數(shù)據(jù)訪問(wèn)功能的原始的API。Reader像一個(gè)新的分析器類,它即有XMLDOM的強(qiáng)大,又有SAX的快速簡(jiǎn)單。Writer為簡(jiǎn)單的創(chuàng)建XML文檔而設(shè)計(jì)。雖然Reader和Writer都是.NET Framework中的一小塊,但是它們是相互獨(dú)立的API。在本文中,我們只討論了怎么樣用Reader和Writer完成一些主要的工作, 介紹了驗(yàn)證分析器的原理機(jī)制,并把Reader和writer整合在一個(gè)單獨(dú)的類中。上述所有的這些類都是輕量級(jí)的,類似于游標(biāo)式的XMLDOM分析器。