控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

Windows Phone7解析XML的2种方式

作者:未知 出处:cnblogs 2012年06月08日 阅读:

 对于XML数据的解析,WP7平台并没有提供SAXParser和DOMParser这两个常用的解析器,如果你过去是开发Android应用的,你可能发现在Windows Phone 7上解析XML还需要.Net Framework中专有的,比如

 
XMLReader和 LINQ to XML parser这两种方法。
 1. XML Reader
XmlReader解析速度比较快同时比较省内存,但是只读的无法修改XML的内容,同时没有缓存解析功能,在Android平台可以使用SAXParser类来解析,而XmlReader这点很类似SAXParser,下面给出一个简单的例
 
子。
StringBuilder output = new StringBuilder();
String xmlString = @"<?xml version='1.0'?> 
<Items> 
<Item>sub element<more/> cwj</Item> 
</Items>";
// 创建一个XmlReader实例,这点类似Android平台上的SAXParser实例通过SAXParserFactory创建。 
using (XmlReader reader = XmlReader.Create(new StringReader(xmlString))) 
    XmlWriterSettings ws = new XmlWriterSettings(); 
    ws.Indent = true; 
 
    using (XmlWriter writer = XmlWriter.Create(output, ws)) 
    { 
  
        while (reader.Read()) 
        { 
            switch (reader.NodeType) 
            { 
   case XmlNodeType.Element: // 类似startElement()在Android的SAXParser类中。
    writer.WriteStartElement(reader.Name); 
    break;             
   case XmlNodeType.Text:  //解析节点内容
    writer.WriteString(reader.Value); 
    break; 
   case XmlNodeType.XmlDeclaration: 
   case XmlNodeType.ProcessingInstruction: //解析声明 
    writer.WriteProcessingInstruction(reader.Name, reader.Value); 
    break; 
   case XmlNodeType.Comment:  //解析注释
    writer.WriteComment(reader.Value); 
    break; 
   case XmlNodeType.EndElement: // 类似endElement()在SAXParser类中
    
    writer.WriteFullEndElement(); 
    break; 
            } 
        } 
    } 
}
 2. LINQ to XML
  Linq to xml这点类似我们传统Win32上使用的MSXML中的DOM解析器,将整个XML文件映射到内存,对于XML的定位和编辑比较方便。对于创建XML文件来说使用方法为,
  StringBuilder output = new StringBuilder(); 
  
XDocument srcTree = new XDocument( 
    new XComment("注释内容"), 
    new XElement("Root", 
        new XElement("Child1", "data1"), 
        new XElement("Child2", "data2"), 
        new XElement("Child3", "data3"), 
        new XElement("Child2", "data4"), 
        new XElement("Info5", "info5"), 
        new XElement("Info6", "info6"), 
        new XElement("Info7", "info7"), 
        new XElement("Info8", "info8") 
    )     
); 
  
XDocument doc = new XDocument(  
    new XComment("注释"), 
    new XElement("Root", 
        from el in srcTree.Element("Root").Elements() 
        where ((string)el).StartsWith("data") 
        select el 
    ) 
); // 这里的语法比较特别类似传统DOM中的root.getElementsByTagName(ITEM); 
  
output.Append(doc + Environment.NewLine); 
OutputTextBlock.Text = output.ToString();

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统