为什么XmlDocument在Windows8引擎中使用?

时间:2012-05-16 16:22:16

标签: c# xml windows-8 linq-to-xml xmldocument

我认为XmlDocument已被弃用,我们必须使用XDocument。但是来自Windows 8 UX核心的TileUpdateManager.GetTemplateContent返回XmlDocument类。一旦它是新的API,我想知道在这里使用XmlDocument的原因是什么?

2 个答案:

答案 0 :(得分:1)

XmlDocument类在.Net中有一段时间了,他们可能更喜欢保持这种状态。另一个原因可能是提供多语言支持。

你可以用另一个来包装/装饰这个功能。有多种方法可以将XmlDocument转换为XDocument

  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));
  }

答案 1 :(得分:1)

(我使用XDocument将Linq2XML& XmlDocument引用到System.XML api中)

我可以看到的原因:

  1. XDocument需要LINQ,这是特定于.NET的。 Windows应用商店应用也可以用JavaScript构建,因此,如果您要构建一个XDocument以跨JavaScript和JavaScript工作。然后你需要移植LINQ,现在工程任务很庞大。
  2. XDocument以功能方式使用XML,这非常不标准 - 使用XML的标准方法是通过DOM模型。因此,XmlDocument提供了与其他地方工作方式更加一致的方式。
  3. 我猜你在认为它们是单独的API - 当XDocument构建在普通的XmlReader类之上时。因此,除非你完全重写了XmlDocument,否则你总是需要它 - 重写一些效果很好的东西的价值是什么,这样你就可以将它隐藏在新版本的其他内容中。
  4. 虽然进行了大量的清理工作。已经对新API进行了改进,记住它仍然建立在COM&我们目前拥有的许多内置Windows API(这种抽象意味着未来应该改变它不会影响我们,但目前它并不是直接与内核交谈),因此很可能他们正在利用现有工具和库中的库 - 它们都是基于DOM的,并且更好地与XmlDocument对齐。