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文档,因为它没有根节点:
.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类解释。