Ho livelli di tabelle (Livello1, Livello2, Livello3, ...) Per semplicità, diremo che ho 3 livelli.
Le righe nelle tabelle di livello superiore sono i genitori delle righe della tabella di livello inferiore. La relazione non salta comunque i livelli. Per esempio. Row1Level1 è padre di Row3Level2, Row2Level2 è padre di Row4Level3. Il genitore di Livello (n-1) è sempre in Livello (n).
Date queste tabelle con i dati, ho bisogno di trovare una funzione ricorsiva che generi un file XML per rappresentare la relazione e i dati. Per esempio.
<data>
<level levelid = 1 rowid=1>
<level levelid = 2 rowid=3 />
</level>
<level levelid = 2 rowid=2>
<level levelid = 3 rowid=4 />
</level>
</data>
Mi piacerebbe ricevere aiuto con uno pseudo-codice per questa configurazione. Questo è quello che ho finora:
Codice modificato / aggiornato:
XElement GetXML(ArrayList list, XElement xml)
{
XElement xElement = xml;
// Get the rows of the current list into xmlData format
ArrayList childList = GetChildList(list);
if (childList != null)
{
foreach (Row r in list)
{
// Convert the rows to xml
xElement = new XElement(xml);
xElement.AddFirst(new XElement("Row"));
xElement.Add(new XAttribute("RowId", r.RowId));
// Get the children as xml
if (childList != null)
{
ArrayList childRows = GetChildRows(list);
XElement childXml = GetXML(childRows, xElement);
if (childXml != null)
{
xElement.Add(childXml);
}
}
}
}
return xElement;
}
Questa è la funzione principale. Posso aggiungere il resto del programma di test, se necessario. Grazie.
static void Main(string[] args)
{
Program p = new Program();
// Initialize datasets
p.InitializeLists();
// Create xml map of the datasets
XElement x = p.GetXML(p.level1, new XElement("Row"));
Console.WriteLine(x.ToString());
Console.ReadLine();
}