Creare Array Multidimensionale da file xml

lunedì 20 febbraio 2012 - 23.36
Tag Elenco Tags  C#  |  .NET 2.0

serrax Profilo | Junior Member

Salve a tutti,
ultimamente sto lavorando su file xml e sono davanti ad una piccola difficoltà.... mi spiego:
io ho questo file xml:

<field>
<campo_1>test_1</campo_1>
<campo_2>test_1</campo_2>
</field>
<field>
<campo_1>test_2_a</campo_1>
<campo_2>test_2_a</campo_2>
</field>

Ora io vorrei associare un array multidimensionale ad ogni nodo "field"
per avere un risultato di questo tipo:

string[,] newarray = new string[,] {{"test","test"}, {"test_a","test_a"}};

Dato che io leggo l'xml con un ciclo for e ovviamente non so quanti nodi "field" ci sono nell'xml ho difficoltà nel creare quest'array...

Quello che serve a me è poter poi leggere i nodi in qualcosa di questo tipo:

for(int i=0;i<newarray.Count;i++)
{
Response.Write(newarray[i]["campo_1"]); //cioè -> test_1
}


PS per chi non l'avesse capito il linguaggio è c#
qualcuno ha delle idee??
grazie

alx_81 Profilo | Guru

>Salve a tutti,
Ciao

>qualcuno ha delle idee??
prova l'esempio qui di seguito, è una semplice console app:
public class Campo { public string id { get; set; } public string value { get; set; } } public class Field { public string id { get; set; } public List<Campo> campi { get; set; } } class Program { static void Main(string[] args) { // xml di esempio string xmlString = @"<?xml version='1.0' encoding='UTF-8'?> <root> <field id='1'> <campo id='1'>1_test_1</campo> <campo id='2'>2_test_1</campo> </field> <field id='2'> <campo id='1'>1_test_2</campo> <campo id='2'>2_test_2</campo> </field> </root>"; Field field; // creo il container vuoto List<Field> fields = new List<Field>(); XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(xmlString); if (xmldoc.DocumentElement != null) { // ricavo la lista dei nodi field XmlNodeList xmlFields = xmldoc.GetElementsByTagName("field"); foreach (XmlNode f in xmlFields) { // creo un nuovo field field = new Field(); if (f.Attributes != null) field.id = f.Attributes["id"].Value; // creo la base per aggiungere i campi contenuti field.campi = new List<Campo>(); // per ognuno di essi ricavo la lista dei nodi campo XmlNodeList xmlCampi = f.SelectNodes("campo"); if (xmlCampi != null) foreach (XmlNode c in xmlCampi) { // aggiungo gli item al nodo field Campo campo = new Campo(); if (c.Attributes != null) campo.id = c.Attributes["id"].Value; campo.value = c.InnerText; field.campi.Add(campo); } // a questo punto aggiungo al container fields.Add(field); } } foreach (var f in fields) { Console.WriteLine("field id={0}, count campi={1}", f.id, f.campi.Count); foreach (var c in f.campi) { Console.WriteLine("campo id={0}, valore={1}", c.id, c.value); } } Console.ReadLine(); } }

>grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5