/// <summary> /// Busca las etiquetas de un concepto /// </summary> /// <param name="xmlSchemaElement"></param> /// <param name="linkbase"></param> /// <returns></returns> private string etiquetas(Concept concepto, LinkbaseEtiqueta linkbase) { String etiquetasFinales = ""; //Verificar todos los elementos desde donde aparezca el concepto ArcoEtiqueta arcoEtiqueta = null; foreach (Arco arcoGen in linkbase.Arcos) { arcoEtiqueta = (ArcoEtiqueta)arcoGen; Localizador loc = null; foreach (ElementoLocalizable elemento in arcoEtiqueta.ElementoDesde) { loc = (Localizador)elemento; if (loc.Destino.Elemento.Id.Equals(concepto.Elemento.Id)) { //Concatenar las etiquetas disponibles foreach (ElementoLocalizable elementoRecurso in arcoEtiqueta.ElementoHacia) { etiquetasFinales += ((Etiqueta)elementoRecurso.Destino).Lenguaje + " : " + ((Etiqueta)elementoRecurso.Destino).Rol + " : " + ((Etiqueta)elementoRecurso.Destino).Valor + " "; } } } } return(etiquetasFinales); }
/// <summary> /// Imprime recursivamente los hijos de un padre /// </summary> /// <param name="nivel"></param> /// <param name="idPadre"></param> /// <param name="listaArcos"></param> private void imprimirHijos(int nivel, string idPadre, System.Collections.Generic.IList <Arco> listaArcos, LinkbaseEtiqueta linkbase) { foreach (ArcoPresentacion arco in listaArcos) { //Imprime hijos con el nivel foreach (ElementoLocalizable conceptoLoc in arco.ElementoDesde) { Concept concepto = (Concept)conceptoLoc.Destino; if (concepto.Elemento.Id.Equals(idPadre)) { for (int i = 0; i < nivel; i++) { Debug.Write("\t"); } foreach (ElementoLocalizable conceptohaciaLoc in arco.ElementoHacia) { Concept conceptohacia = (Concept)conceptohaciaLoc.Destino; Debug.WriteLine(" " + conceptohacia.Elemento.Id + " - " + etiquetas(conceptohacia, linkbase)); imprimirHijos(nivel + 1, conceptohacia.Elemento.Id, listaArcos, linkbase); } } } } }