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

01 StringBuilder output = new StringBuilder();
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(new StringReader(xmlString)))
10 {
11 XmlWriterSettings ws = new XmlWriterSettings();
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 case XmlNodeType.Element: // 类似startElement()在Android的SAXParser类中。
22 writer.WriteStartElement(reader.Name);
23 break;
24 case XmlNodeType.Text: //解析节点内容
25 writer.WriteString(reader.Value);
26 break;
27 case XmlNodeType.XmlDeclaration:
28 case XmlNodeType.ProcessingInstruction: //解析声明
29 writer.WriteProcessingInstruction(reader.Name, reader.Value);
30 break;
31 case XmlNodeType.Comment: //解析注释
32 writer.WriteComment(reader.Value);
33 break;
34 case XmlNodeType.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 = new StringBuilder();
02  
03 XDocument srcTree = new XDocument(
04 new XComment("注释内容"),
05 new XElement("Root",
06 new XElement("Child1""data1"),
07 new XElement("Child2""data2"),
08 new XElement("Child3""data3"),
09 new XElement("Child2""data4"),
10 new XElement("Info5""info5"),
11 new XElement("Info6""info6"),
12 new XElement("Info7""info7"),
13 new XElement("Info8""info8")
14 )
15 );
16  
17 XDocument doc = new XDocument(
18 new XComment("注释"),
19 new XElement("Root",
20 from el in srcTree.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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值