2015-11-19 5 views
0

J'ai ce fichier xml avec plusieurs niveaux pour les Childs de noeud:XML avec plusieurs niveaux DataSet avec XmlDocument

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

Je dois le lire dans l'ordre, mais il est impossible avec XmlReader, donc je dois utiliser XmlDocument pour lire chaque noeud et copier dans DataSet (ou similaire). Comment puis-je lire nœud par nœud et copier dans l'ensemble de données en C# ??? Toute aide s'il vous plaît?

+0

Ce n'est certainement pas un XML. Afficher le XML réel. –

Répondre

0

Je pense que vous pouvez utiliser Xpath sur XMl Document pour lire nœud par nœud.

0

Convertir chaîne XML à DataSet en utilisant StringReader

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

données XML écriture dans un DataSet directement à partir du fichier xml:

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

Il est possible en utilisant XDocument et LINQ-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);  
}