WP7平台常用方法的XML解析

本文详细介绍了在WindowsPhone7平台上解析XML数据的方法,包括使用XMLReader进行快速且节省内存的读取操作,以及使用LINQtoXML进行内存映射和编辑的便捷方式。文中提供了具体的代码示例,帮助开发者实现高效的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于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,下面给出一个简单的例子。

01 StringBuilder output =newStringBuilder();
02
03 String xmlString =@"<?xml version='1.0'?>
04 <Items>
05 <Item>sub element<more/> cwj</Item>
06 </Items>";
07
08 // 创建一个XmlReader实例,这点类似Android平台上的SAXParser实例通过SAXParserFactory创建。
09 using(XmlReader reader = XmlReader.Create(newStringReader(xmlString)))
10 {
11 XmlWriterSettings ws =newXmlWriterSettings();
12 ws.Indent =true;
13
14 using(XmlWriter writer = XmlWriter.Create(output, ws))
15 {
16
17 while(reader.Read())
18 {
19 switch(reader.NodeType)
20 {
21 caseXmlNodeType.Element:// 类似startElement()在Android的SAXParser类中。
22 writer.WriteStartElement(reader.Name);
23 break;
24 caseXmlNodeType.Text://解析节点内容
25 writer.WriteString(reader.Value);
26 break;
27 caseXmlNodeType.XmlDeclaration:
28 caseXmlNodeType.ProcessingInstruction://解析声明
29 writer.WriteProcessingInstruction(reader.Name, reader.Value);
30 break;
31 caseXmlNodeType.Comment://解析注释
32 writer.WriteComment(reader.Value);
33 break;
34 caseXmlNodeType.EndElement:// 类似endElement()在SAXParser类中
35
36 writer.WriteFullEndElement();
37 break;
38 }
39 }
40 }
41 }

2. LINQ to XML

Linq to xml这点类似我们传统Win32上使用的MSXML中的DOM解析器,将整个XML文件映射到内存,对于XML的定位和编辑比较方便。对于创建XML文件来说使用方法为,

01 StringBuilder output =newStringBuilder();
02
03 XDocument srcTree =newXDocument(
04 newXComment("注释内容"),
05 newXElement("Root",
06 newXElement("Child1","data1"),
07 newXElement("Child2","data2"),
08 newXElement("Child3","data3"),
09 newXElement("Child2","data4"),
10 newXElement("Info5","info5"),
11 newXElement("Info6","info6"),
12 newXElement("Info7","info7"),
13 newXElement("Info8","info8")
14 )
15 );
16
17 XDocument doc =newXDocument(
18 newXComment("注释"),
19 newXElement("Root",
20 from elinsrcTree.Element("Root").Elements()
21 where ((string)el).StartsWith("data")
22 select el
23 )
24 );// 这里的语法比较特别类似传统DOM中的root.getElementsByTagName(ITEM);
25
26 output.Append(doc + Environment.NewLine);
27 OutputTextBlock.Text = output.ToString();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值