打破沙锅--net处理Xml

 net处理xml

.net平台是基于xml的,它提供了对xml的内置支持。
很自然的可以实现对象的串行化,这也使得远程对象传递成为可能。
同时这种支持为对象关系映射提供了基石。

数据库数据可以很容易转化为xml,而xml又可以很容易反串行化为对象。
从而最终实现数据库关系数据与对象之间的映射。

.net中处理xml的命名空间是system.xml

处理方式有:
  第一、利用MSXML4.0 COM组件,操作xml。使用了与COM交互性。注意命名空间是MSXML2
    主要类有:DOMDocumnet40,方法有selectSingleNode,selectNodes
              IXMLDOMNodeList,方法:nextNode
              IXMLDOMNode
   -------------会增加开销。
  第二、流读写方式,耗内存少。元素节点有name无value,有Text, 文本节点无name,有value。
   注意xmlnodeType枚举类型的使用。
   1、XmlReader(抽象类)
      只进只读内存要求不高
      注意,xmlReader xr=XmlReader.Create()获得一个读取器,这里用的是工厂模式,用户并不关心
      实际的读取器类是什么。
      然后利用xr.read() (文件)或者xr.EOF (流)实现遍历读取器,判断节点类型执行读取操作。
      常用方法:xr.ReadElementString,xr.MoveToContent,xr.GetAtrribute
      可以利用xr验证xml是否符合模式。
           
          { 
            ..........         
             XmlReaderSettings  settings=new XmlReaderSettiongs();
             settngs.Schemas.add('targetnameSpace',"books.xsd");
             settings.XsdValidate=true;
             settings.ValidatationEventHandler+=new ValidatationEventHandler(.ehandle)
             XmlReader xr=XmlReader.Create(..,settings);
            .......
          }
             //事件处理程序
             ehandle(...)
             {
                 .......
             }
   2、XmlWriter( 抽象类)写设置类XmlWriterSettings settings=new ...
       XmlWriter xw=XmlWriter.Creater(....,settings)
       xw.WriteStartDocument/xw.WriterElementString/xw.WriteStartElement/WriteAttributeString....
       xw.flush()/xw.close
第三、DOM模型,XMLNode/XmlNodeList构成了DOM的核心,适应于随机访问xml
      1、XmlDocument doc=new XmlDocument()
      doc.selectSigleNode/selectnodes/doc.createElement/XmlElement/doc.DocumentElement.append/
      doc.Save/WriteContentto(...流对象)
      2、(视图导航模式)XPathNavigator基于XmlDocument或者XPathDocument(只读)创建,System.Xml.XPath
         xpathNodeItarator
         XmlNavigator nv=doc.CreateNavigator(..);
         xpathNodeItarator ite= nav.select('xpath')
         while(ite.movenext())
         {
             xpathNodeItarator ite2 =ite.current.selectdscendants(..)
             while(...)
               {}
         }
    附:
     xml样式转换:System.xml.xsl
     XslTransForm xsltransform=new XslTransForm();
     xsltransform.load('.xsl');
     xsltransform.transform('books.xml',.htm);
     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值