学习Professional ASP.NET 2.0 XML(一)

    最近在wrox的网站上下了很多代码,一直没时间来看,碰好今天是星期天,闲下来看看里面的代码学点东西.wrox的例子总是循序渐进,所以很容易理解.

一.创建XML读取器.

在.net2.0中用新的方法Create()创建XML实例

第一个例子读取,XML文件的元素值,如<item>



显示效果如下

首先创建XmlReader实例

根据reader.Depth深度值返回值其name,Depth就是是返回元素从跟节点开始所在的位置,如下面的XML文件

<? xml version='1.0' ?>
< employees >
  
< employee  id ="1" >     
    
< name >
      
< firstName > Nancy </ firstName >
      
< lastName > Davolio </ lastName >  
    
</ name >
    
< city > Seattle </ city >
    
< state > WA </ state >
    
< zipCode > 98122 </ zipCode >      
  
</ employee >
  
< employee  id ="2" >     
    
< name >
      
< firstName > Andrew </ firstName >
      
< lastName > Fuller </ lastName >
    
</ name >
    
< city > Tacoma </ city >
    
< state > WA </ state >
    
< zipCode > 98401 </ zipCode >      
  
</ employee >  
</ employees >


emplpyees的depth为0,emplyoee的depth为1,name的德depth为2,firstName和lastName的depth为3

下面看一下name属性

name获取当前节点的限定名,返回的名称取决于节点的 NodeType,上面的 NodeType类型为Element(标记名),所以返回标记名.


接着继续看第二个例子,读取标记中的属性,根据上面的例子延伸


<% @ Page Language = " C# "   %>
<% @ Import Namespace = " System.Xml "   %>
< script runat = " server " >
    
void  Page_Load( object  sender, EventArgs e)
    
{
        
//XML文件路径
        string xmlFilePath = Request.PhysicalApplicationPath + @"/Employees.xml";
        
try
        
{
            
//创建XmlReader实例
            using (XmlReader reader = XmlReader.Create(xmlFilePath))
            
{
                
string result;
                
while (reader.Read())
                
{
                    
//判断节点类型
                    if (reader.NodeType == XmlNodeType.Element)
                    
{
                        
                        result 
= "";
                        
for (int count = 1; count <= reader.Depth; count++)
                        
{
                            result 
+= "===";
                        }

                        result 
+= "=> " + reader.Name;
                        lblResult.Text 
+= result;
                        
// 判断节点是否有属性存在
                        if (reader.HasAttributes)
                        
{
                            lblResult.Text 
+= " (";
                            Response.Write(
"<br>"+reader.AttributeCount);
                            
for (int count = 0; count < reader.AttributeCount; count++)
                            
{
                                
//索引属性
                                reader.MoveToAttribute(count);
                                lblResult.Text 
+= reader.Name+",";
                            }

                            lblResult.Text 
+= ")";
                            
//索引当前属性节点
                            reader.MoveToElement();
                        }

                        lblResult.Text 
+= "<br/>";
                    }

                }

            }

        }

        
catch (Exception ex)
        
{
            lblResult.Text 
= "发生错误: " + ex.Message;
        }
        
    }

</ script >

< html xmlns = " http://www.w3.org/1999/xhtml "   >
< head runat = " server " >
    
< title > 读取XML属性 </ title >
</ head >
< body >
    
< form id = " form1 "  runat = " server " >
    
< div >
        
< asp:label id = " lblResult "  runat = " server "   />
    
</ div >
    
</ form >
</ body >
</ html >


这个例子比上面多了几行代码,从判断节点属性是否存在开始.获取属性数AttributeCount,

然后根据属性位置MoveToAttribute()返回属性名称. 最后还有一个reader.MoveToElement()方法,当在派生类中被重写时,移动到包含当前属性节点的元素

其返回一个布尔值 如果拿掉这句话以Response.Write(reader.MoveToElement());代替的话,其值为true表示读取器定位在属性上,

添加这个方法的话返回值为false即读取器不是定位在属性上
reader.MoveToElement();
Response.Write(reader.MoveToElement());

大家可以测试一下.了解上面几个属性和方法就应该明白怎么读取的了.

例子继续.

第三个例子继续深入,读取XML元素值和属性值,也先来看一下代码




先熟悉几个方法

GetAttribute 方法 获取属性的值
ReadString 方法 将元素或文本节点的内容当做字符串读取
ReadElementContentAsInt 方法 读取当前元素并将内容作为 32 位有符号整数返回

这个例子是根据元素一个一个进行判断,再获取值的.最后还要判断是否XML文件结尾判断节点类型是否为EndElement末尾元素标记.


接着还有最后一个例子,其实是介绍XmlReaderSettings.
这个对象可以设定XML的一些功能.比如是否忽略空白,注释

1 XmlReaderSettings settings  =   new  XmlReaderSettings();
2 settings.IgnoreComments  =   true ;
3 settings.IgnoreWhitespace  =   true ;
4 XmlReader reader  =  XmlReader.Create(xmlFilePath, settings)

具体的还得看MSDN,可能我说的很多都不对,只是把自己学习的过程记录下来.也希望对大家有帮助
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值