Windows Phone7解析XML的2種方式

來源:互聯網
上載者:User

對於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開發人員:http://dev.ruanman.net

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.