【发布时间】:2021-05-04 01:14:00
【问题描述】:
我看到来自 Microsoft here 的代码示例如何将 DataSet 对象转换为 XmlDataDocument 以更好地使用 XML,但此类将被弃用。
这意味着我们或许应该使用 XmlDocument 类,但我们可以将 DataSet 转换为 XmlDocument 吗?
这是感兴趣的代码部分:(基本上我想提取某些节点)
XmlDataDocument xmlDoc = new XmlDataDocument(dataSet);
XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes(
"descendant::Customers[*/OrderDetails/ProductID=43]");
DataRow dataRow;
foreach (XmlNode xmlNode in nodeList)
{
dataRow = xmlDoc.GetRowFromElement((XmlElement)xmlNode);
if (dataRow != null)
Console.WriteLine(dataRow[0]);
}
【问题讨论】:
-
每个 XML 都是不同的。没有看到 xml 样本,我无法判断解析 xml 数据需要哪些方法。
-
这与我在this 问题中发布的 XML 相同,但我什至无法进入此处的 xml 部分,因为我得到空引用异常。我认为这是从 XML 加载特定数据部分的好方法,例如在这种情况下
Benchmark/Group -
您是否使用了我在链接中的回答?哟可以使用DataSet方法ReadXml:DataSet ds = new DataSet(); ds.ReadXml(fileName) 读取的 xml 不适用于具有很多层次结构的 XML。所以我想你想用我的代码来解析xml,然后将解析后的数据加载到DataSet中。或者修改我的代码,将解析后的 xml 放入 DataSet 而不是类。
-
@zar - 该问题的 XML 被截断。而且即使我在最后添加缺少的两个节点,也无法加载到
DataSet,见dotnetfiddle.net/gIwE73。 -
这是XY problem吗?
DataSet和DataTable有相当丰富的工具可以直接运行查询,参见 Query datasets, Cross-Table Queries (LINQ to DataSet),