Hola a todos, se ma ha planteado un problemilla y os lo quiero comentar.
Tengo un xsd que valida una plantilla xml. Bien, dado ese xsd quiero generar de forma dinámica un formulario para petición y muestra datos. Una vez terminado de informar dicho formulario, generaré un xml que será validado por el xsd y dicho xml será guardado para otros accesos.
Haciendo las cosas "a pelo" no hay problema, es fácil:
private void Analiza (MyTreeNode treeNode)
{
switch (treeNode.GetTipoNodo ())
{
case -1 :
case ObjTreeXML.ID_GENERICO :
case ObjTreeXML.ID_ELEMENTO :
foreach (MyTreeNode tn in treeNode.Nodes)
{
switch (tn.GetTipoNodo ())
{
case -1 :
case ObjTreeXML.ID_GENERICO :
case ObjTreeXML.ID_ELEMENTO :
Analiza (tn);
break;
}
}
break;
case ObjTreeXML.ID_TEXTO :
break;
case ObjTreeXML.ID_CDATA :
break;
}
}
siendo treenode una clase:
class MyTreeNode: System.Windows.Forms.TreeNode
{
private int TipoNodo;
private string IDNodo;
private string ValorNodo;
/// <summary>Constructor predeterminado (identico a treeNode)</summary>
/// <param name="szTexto">Cadena que aparecera en el contenido del nodo</param>
public MyTreeNode (string szTexto): base(szTexto)
{
SetTipoNodo (-1);
SetIDNodo ("");
SetValorNodo ("");
}
/// <summary>Constructor especializado (No usar)</summary>
/// <param name="iTipoNodo">Tipo de nodo (segun constantes ID_XXXXX)</param>
/// <param name="szTexto">Cadena que aparecera en el contenido del nodo</param>
public MyTreeNode (int iTipoNodo, string szTexto): base(szTexto)
{
SetTipoNodo (iTipoNodo);
SetIDNodo ("");
SetValorNodo ("");
}
/// <summary>Constructor especializado</summary>
/// <param name="iTipoNodo">Tipo de nodo (segun constantes ID_XXXXX)</param>
/// <param name="szIDNodo">ID del nodo</param>
/// <param name="szValorNono">Valor del nodo</param>
/// <param name="szTexto">Cadena que aparecera en el contenido del nodo</param>
public MyTreeNode (int iTipoNodo, string szIDNodo, string szValorNono, string szTexto): base(szTexto)
{
SetTipoNodo (iTipoNodo);
SetIDNodo (szIDNodo);
SetValorNodo (szValorNono);
}
/// <summary>Devuelve el tipo de nodo</summary>
/// <returns>entero con el tipo de nodo (segun constantes ID_XXXXX)</returns>
public int GetTipoNodo () { return TipoNodo; }
/// <summary>Fija el tipo del nodo</summary>
/// <param name="iTipoNodo">entero con el tipo de nodo (segun constantes ID_XXXXX)</param>
public void SetTipoNodo (int iTipoNodo) { TipoNodo = iTipoNodo; }
/// <summary>Devuelve el ID del nodo</summary>
/// <returns>string con el ID del nodo</returns>
public string GetIDNodo () { return IDNodo; }
/// <summary>Fija el ID del nodo</summary>
/// <param name="szIDNodo">string con el identificador del nodo</param>
public void SetIDNodo (string szIDNodo) { IDNodo = szIDNodo; }
/// <summary>Devuelve el valor del nodo</summary>
/// <returns>string con el valor del nodo</returns>
public string GetValorNodo () { return ValorNodo; }
/// <summary>Fija el valor del nodo</summary>
/// <param name="szValorNodo">string con el valor del nodo</param>
public void SetValorNodo (string szValorNodo) { ValorNodo = szValorNodo; }
} // fin de class MyTreeNode
Pero el rollo de hacerlo de modo dinámico me va un pelín grande, alguna sugenrencia?
Muchas gracias de antemano.