具有XmlDocument的数据集的多个级别的XML

本文关键字:XML XmlDocument 数据集 具有 | 更新日期: 2023-09-27 18:22:28

我有一个xml文件,其中包含节点子级的几个级别:

-product
--name
--price
--made
-----product
--------name
--distributor
-----name
------address
/product    

我需要按顺序读取它,但使用XmlReader是不可能的,所以我必须使用XmlDocument读取每个节点并复制到DataSet(或类似的数据集)中。如何在C#中逐节点读取并复制到数据集???请帮忙吗?

具有XmlDocument的数据集的多个级别的XML

使用StringReader 将xml字符串转换为数据集

string xmlData = "<product><name></name><price></price><made></made></product>";
StringReader reader = new StringReader(xmlData);
DataSet ds = new DataSet(); 
ds.ReadXml(reader);

直接从XML文件将XML数据写入数据集:

string myfile = @"C:'myXml.xml";
DataSet ds = new DataSet();
ds.ReadXml(myfile);

我认为您可以在XMl文档上使用Xpath逐节点读取。

使用XDocumentLINQ-to-XML:是可能的

XDocument doc = XDocument.Load("test.xml");
// Create two DataTable instances.
DataTable table1 = new DataTable("patients");
table1.Columns.Add("name"); 
foreach(var name in doc.Root.DescendantNodes().OfType<XElement>()
        .Select(x => x.Name).Distinct())
{
    table1.Rows.Add(name);
    Console.WriteLine(name);       
}