替换过时的 System.Xml.XmlDataDocument?

Posted

技术标签:

【中文标题】替换过时的 System.Xml.XmlDataDocument?【英文标题】:Replacing the obsolete System.Xml.XmlDataDocument? 【发布时间】:2011-04-14 18:11:53 【问题描述】:

我在已从 .NET 2.0 升级到 .NET 4.0 的 Web 表单应用中有一个 System.Web.UI.WebControls.Xml 控件 (Xml1)

我从代码隐藏页面收到两个警告,我想对其进行处理。

... 
Dim ds As DataSet = app.GetObjects
Dim xmlDoc As New System.Xml.XmlDataDocument(ds)
Xml1.Document = xmlDoc
Xml1.TransformSource = "~/xslt/admin_objectslist.xslt"
...

从第二行我得到警告:

'System.Xml.XmlDataDocument' 已过时:'XmlDataDocument 类将在未来版本中删除。'。

从第三行我得到警告:

'Public Property Document As System.Xml.XmlDocument' 已过时:'推荐的替代方法是 XPathNavigator 属性。创建一个 System.Xml.XPath.XPathDocument 并调用 CreateNavigator() 来创建一个 XPathNavigator。

推荐的 .NET 4.0 替代品是什么?

【问题讨论】:

【参考方案1】:

使用 Linq2XML - 它比任何其他 XML 工具都更强大......允许您像处理数据集或其他强类型数据源一样查询和创建/读取/更新/删除 (CRUD) XML .

一旦您开始使用 Linq,您将永远不会回到旧的方式......它绝对会摇滚!

【讨论】:

虽然您说 Linq 是 MS 批准的用于处理 xml 的升级是对的,但您的答案需要代码来显示如何完成您正在谈论的内容。【参考方案2】:

ds.我在 3.5 中也遇到了这个问题。这是我想出的:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(ds.GetXml());
xml1.XPathNavigator = xmlDoc.CreateNavigator();                
xml1.TransformSource = @"~/XSLT/LogEntryTransform.xslt";

希望对你有帮助。

【讨论】:

@Sung 不同的人,所以他不能 正是我需要的。非常感谢。 xml1 是 aspx 中的 控件。代码隐藏是一个 System.Web.UI.WebControls.Xml 对象。

以上是关于替换过时的 System.Xml.XmlDataDocument?的主要内容,如果未能解决你的问题,请参考以下文章

替换过时的 System.Xml.XmlDataDocument?

仍然收到警告:配置“编译”已过时并已替换为“实现”

替换过时的Notification.Builder.SetPriority()?

statefuljob 过时 用啥替换

MD5加密过时方法替换

如何在 .NET 6 中用 HttpClient 替换过时的 WebClient