NEWS_AD_BEGIN-->
String和Fragment 程序員把在MSXML的程序剪切下來,會發現在COM和.NET Framework XML API 之間的差別很大。.Net Framework類本身沒有提供方法去分析存儲在字符串中XML數據。不像MSXML分析器對象,XMLTestReader類沒有提供任何一種LoadXML方法從一個格式良好的字符中創建閱讀器。沒有提供類似LoadXML的方法因為你可以用特殊的text reader---StringReader類來獲得同樣的功能。
XMLTextReader其中一個構造函數接受一個TextReader派生對象和一個XML reader作參數(該閱讀器以text reader的內容為基礎創建)。一個text reader類是一個流,這個流是輸入的字符經優化生成的。StringReader類繼承TextReader類,並用一個內存中字符串作為其輸入流。下面的代碼片斷演示了怎樣初始化一個XML reader,用一個格式良好的XML 字符串作為其輸入:
string XMLText = "...";
StringReader strReader = new StringReader(XMLText);
XMLTextReader reader = new XMLTextReader(strReader);
另外,用StringWriter類代替TextWrite類,你可以從內存字符中創建一個XML文檔。
一個指定類型的XML字符串是一個XML片斷(fragment). XML片斷由XML文本構成,但沒有根節點的XML文檔不是格式良好的XML文檔,所以不能被應用。一個XML片斷是原始的文檔的一部分,所以它可能缺少根節點。例如,下面的XML文本是一個有效的XML 片斷,但不是一個有效的XML文檔,因為它沒有根節點:
Dino
Esposito .Net Framework XML API允許程序員把XML片斷與一個分析器內容結合使用,分析器內容由類似encoding字符集,DTD文檔,命名空間,語言和空格處理程序構成:
public XMLTextReader(
string XMLFragment,
XMLNodeType fragType,
XMLParserContext context
);
XMLFragment參數包括了XML字符串分析。FragType參數表示fragment的類型,它給出了fragment根節點的類型。只有element,attibute和document類型的節點才能作為fragment的根節點,分析器的內容才能被XMLParserContext類解釋。