wp7解决xml文件两种有效方法

对于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();

现在wp7系统属于刚开始阶段,对于xml的解析还没有更多的技术文件来支持,大家可分享自己文档哦。

时间: 2024-10-13 13:58:07

wp7解决xml文件两种有效方法的相关文章

Win7系统电脑打开rar文件两种的方法

  Win7系统电脑打开rar文件两种的方法 rar是目前比较主流的压缩文件格式.不能直接打开,需要借助一个支持.rar解压缩工具才能打开,才能提取里面的文件出来. 打开rar格式文件的工具 1.WinRAR 2.360压缩 3.快压(kuaizip) 下面以WinRAR为例 安装WinRAR解压缩工具,这时候就会看到需要打开的rar文件会变成压缩包的形式,如下图. 方法一 1.双击需要打开的.rar格式文件,这时候就弹出一个操作框,如下图.选择菜单栏里的"解压到"; 2.选择&quo

jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)_jquery

在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下. (1)通过aspx.cs的静态方法+WebMethod进行处理 简单的介绍下WebMethod方法的用法 1.修饰符主要用public static修饰 2.方法前面加上[WebMethod]属性表明这是WebMethod方法 3.前台html页面(Client端)访问时要使用post方法,和后台.cs文件进行数据交互,否则会返回整个html页面. 4.当后台页面返回数据后

Android时分秒计时器的两种实现方法_Android

可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲述一下了. <Chronometer android:layout_width="wrap_content" android:layout_height="wrap_content" android:format="%s" android:id

php解析xml 的四种简单方法(附实例)_php实例

XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. 1. XML Expat Parser: XML Parser使用Expat XML解析器.Expat是一种基于事件的解析器,它把XML文档视为一系列事件.当某个事件发生时,它调用一个指定的函数处理它.Expat是无验证的解析器,忽略任何链接到文档的DTD.但是,如果文档的形式不好,则会以一个错误

php解析xml 的四种简单方法(附实例)

XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. 1. XML Expat Parser: XML Parser使用Expat XML解析器.Expat是一种基于事件的解析器,它把XML文档视为一系列事件.当某个事件发生时,它调用一个指定的函数处理它.Expat是无验证的解析器,忽略任何链接到文档的DTD.但是,如果文档的形式不好,则会以一个错误

Android时分秒计时器的两种实现方法

可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲述一下了. <Chronometer android:layout_width="wrap_content" android:layout_height="wrap_content" android:format="%s" android:id

Android 手机防止休眠的两种实现方法

Android 手机防止休眠的两种实现方法 实现这一功能的方法有两种, 一种是在Manifest.xml文件里面声明. 一种是在代码里面修改LayoutParams的标志位. 具体如下: 1.在Manifest.xml文件里面用user-permission声明.代码如下: < uses-permission android:name="android.permission.WAKE_LOCK" > < /uses-permission > 这种方法,在安装ap

win8.1系统弹窗提示内存不足两种处理方法

  win8.1系统弹窗提示内存不足两种处理方法.今天就给大家分析一下具体的解决方法. 方法1 1开始菜单里搜索"服务",点击第一个"查看本地服务" 2找到"Diagnostic Policy Service""Diagnostic Service Host""Diagnostic System Host"三个服务项,右键"属性",将启动类型设置为"禁用",服务状态设

金山WPS文档窄表格分栏的两种巧妙方法

我们在平时经常会遇到这样的表格:只有窄窄的几列,但行数却很多,如图1所示. 文档窄表格分栏的两种巧妙方法-word分栏"> 这样,在打印时只能占用每张纸的很小一部分,却要用很多张.此时,我们都希望能把这样的表格分成几栏来进行打印,如图2所示,以便节约纸张. 如上例,原始表格是在WPS 2005的金山表格中制作的,而我们需要分成三栏进行打印. 方法一:寻求合作,用金山文字打印 为了更方便快捷,我们可以请WPS 2005的金山文字来帮忙. 首先选中金山表格中的所有数据,按下"Ctrl