silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight 2使用C#遍历XML(兼容Silverlight3)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在Silverlight 1.1中,C#只能用XmlReader这样一个非常轻量级的东西来解析XML,因此稍有不慎就会出现很多非常奇怪的错误,在这里对XML的解析做一个简单的流程介绍吧。 在对流式XML的解析中,XmlReader对XML节点进行一些区分,这些节点的类型包括: 引用内容: public enum XmlNodeType {     none = 0,     Element = 1

在Silverlight 1.1中,C#只能用XmlReader这样一个非常轻量级的东西来解析XML,因此稍有不慎就会出现很多非常奇怪的错误在这里对XML的解析做一个简单的流程介绍吧。

在对流式XML的解析中,XmlReader对XML节点进行一些区分,这些节点的类型包括

引用内容
public enum XmlNodeType
{
    none = 0,
    Element = 1,
    Attribute = 2,
    TEXT = 3,
    CDATA = 4,
    EntityReference = 5,
    Entity = 6,
    Processinginstruction = 7,
    Comment = 8,
    Document = 9,
    DocumentType = 10,
    DocumentFragment = 11,
    notation = 12,
    Whitespace = 13,
    SignificantWhitespace = 14,
    EndElement = 15,
    EndEntity = 16,
    XmlDeclaration = 17,
}

其中常用到的有Element、Attribite、Text、CDATA、EndElement等。其中Element类型的节点为“ ”形式,EndElement的的节点为“ ”形式,而Text类型则可以为一对标记间的文本内容或者节点之间的空格、换行等。

了解了这些,我们再来看怎么从一个XML文件流中找出自己想要的数据。首先假设有一个这样的XML数据流,其XML结构如下:

引用内容

 
    网球王子
    热门动漫
    OOboy.net
   
    Thu,16 Aug 2007 09:39:19 GMT
 

 
    越狱
    海外剧场
    OOboy.net
   
    Thu,16 Aug 2007 09:39:19 GMT
 

我们用XmlReader的Create方法从这个Stream中创建了一个XmlReader对象,现在我们解析出想要的数据——item项目中的各个子项:title、Catalog、Author、Email、Modified。

解析过程在下面代码的注释中:

引用内容
//reader是一个XmlReader实例
//开始读取流,直到读完为止
//reader.Read()每次读取一个XML节点(XML节点的描述在本文开头)
while (reader.Read())
{
    //如果该节点是一个开始节点,而且节点的名称叫做item
    //那么我们继续读取item子树
    if ((reader.IsStartElement()) && (reader.LocalName == "item"))
    {
        //创建一个新的Item对象,后面把数据保存到Item对象中
        Item item = new Item();

        //继续读取Item下面的内容
        using (XmlReader itemReader = reader.ReadSubtree())
        {
            //开始读取Item下面的内容,知道读完Item子树为止
            //当碰到节点时会跳出循环
            while (itemReader.Read())
            {
                //如果找到一个Element,我们就读取其中的值
                //用这种节点可以忽略空格、回车等等
                if (itemReader.NodeType == XmlNodeType.Element)
                {
                    //如果是空节点,比如上文中的 这样的节点
                    //此时读取下一个节点,否则会出错
                    if (itemReader.IsEmptyElement)
                    {
                        conTinue;
                    }

                    //如果不是空节点
                    //把节点的name记录下来
                    String nodename = itemReader.Name;

                    //读取节点内地文本节点                     itemReader.Read();                     if (itemReader.NodeType == XmlNodeType.Text)                     {                         //根据节点的name,把值保存到Item对应的属性                        switch (nodename.ToUpper())                         {                             case "titlE":                                 item.title = itemReader.Value;                                 break;                             case "CATALOG":                                 item.catalog = itemReader.Value;                                 break;                             case "AUTHOR":                                 item.author = itemReader.Value;                                 break;                             case "EMAIL":                                 item.email = itemReader.Value;                                 break;                             case "MODIFIED":                                 item.modified = itemReader.Value;                                 break;                         }                     }                     //读取完成,再读结束节点End Element                     itemReader.Read();                 }             }         }     } }

大佬总结

以上是大佬教程为你收集整理的Silverlight 2使用C#遍历XML(兼容Silverlight3)全部内容,希望文章能够帮你解决Silverlight 2使用C#遍历XML(兼容Silverlight3)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。