2012-05-16 32 views
1

我想XmlDocument是不贊成的類,我們必須改用XDocument。但來自Windows 8 UX核心的TileUpdateManager.GetTemplateContent返回XmlDocument類。只要它是新的API,我想知道在這裏使用XmlDocument的原因是什麼?爲什麼XmlDocument在Windows8引擎中使用?

+3

它沒有被刪除!只有System.Xml.Linq更好,所以我們都一致使用它http://msdn.microsoft.com/en-us/library/system.xml.linq.aspx – om471987

+0

使用2個功能相當的類集的感覺是什麼?如果Linq更好,爲什麼Microsoft迫使我們使用XmlDocument? –

回答

1

(我使用的XDocument指Linq2XML &的XmlDocument對System.Xml API的)

理由的XDocument我可以看到:

  1. 的XDocument需要LINQ,這是.NET特定的。 Windows商店應用程序也可以用JavaScript構建,所以如果你要構建一個XDocument來跨越JavaScript腳本工作,那麼你需要移植LINQ,現在工程任務非常龐大。
  2. XDocument以功能性的方式處理XML,這非常不標準 - 使用XML的標準方式是通過DOM模型。所以XmlDocument提供了更符合其他方式工作的方式。
  3. 我猜你認爲他們是獨立的API - 當XDocument建立在正常的XmlReader類之上時。因此,除非您完全重寫了XmlDocument,否則您總是需要它 - 重寫某些運行良好的東西的價值在於,您可以將其隱藏在新版本的其他內容中。
  4. 儘管已經完成了對新API的大量清理&的改進,但請記住它仍然建立在COM &之上很多內置的Windows API(我們現在已有)(這種抽象意味着應該改變未來它不會影響我們,但目前它並不直接與內核通信),所以他們很可能利用現有的工具庫 - 這些工具都是基於DOM的,並且更好地與XmlDocument對齊。
1

XmlDocument類在.Net中有一段時間,他們可能更喜歡保持它那樣。另一個原因可能是有多語言支持。

您可以用另一個包裝/裝飾該功能。有多種方法,將XmlDocument的

private static XDocument DocumentToXDocument(XmlDocument doc) 
    { 
    return XDocument.Parse(doc.OuterXml); 
    } 

    private static XDocument DocumentToXDocumentNavigator(XmlDocument doc) 
    { 
    return XDocument.Load(doc.CreateNavigator().ReadSubtree()); 
    } 

    private static XDocument DocumentToXDocumentReader(XmlDocument doc) 
    { 
    return XDocument.Load(new XmlNodeReader(doc)); 
    } 
+0

這並沒有真正解決問題(爲什麼在新的Win8 API中使用_older_ XML API?) –