1

我想这XmlDocument是不推荐使用的类,我们必须使用它XDocument。但是TileUpdateManager.GetTemplateContent从 Windows 8 UX 核心返回XmlDocument类。一旦它是新的 API,我想知道在这里使用 XmlDocument 的原因是什么?

4

2 回答 2

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));
  }
于 2012-05-16T17:00:36.667 回答
1

(我使用 XDocument 将 Linq2XML 和 XmlDocument 引用到 System.XML api 的)

我能看到的原因:

  1. XDocument 需要 LINQ,它是 .NET 特定的。Windows 应用商店应用程序也可以用 JavaScript 构建,因此如果您要构建一个 XDocument 以跨 JavaScript 和 .NET 工作,那么您也需要移植 LINQ,现在工程任务非常庞大。
  2. XDocument 以一种功能性的方式处理 XML,这非常不标准——处理 XML 的标准方式是通过 DOM 模型。因此,XmlDocument 提供了一种与它在其他地方工作的方式更加一致的方式。
  3. 我猜你认为它们是独立的 API - 当 XDocument 构建在普通 XmlReader 类之上时。因此,除非您完全重写 XmlDocument,否则您将始终需要它 - 重写一些运行良好的东西的价值是什么,以便您可以将它隐藏在新版本中的其他东西中。
  4. 虽然对新 API 进行了大量清理和改进,但请记住,它仍然构建在 COM 和我们目前拥有的许多内置 Windows API 之上(这种抽象意味着如果未来发生变化它不会影响我们,但目前它没有直接与内核对话),因此他们很可能正在利用现有的工具和库——它们都是基于 DOM 的,并且更好地与 XmlDocument 保持一致。
于 2012-10-17T10:07:22.080 回答