/// <summary> /// Constructor completo /// </summary> /// <param name="nodo"></param> /// <param name="documento"></param> public InformacionAdicionalContexto(XmlNode nodo, IDocumentoInstanciaXBRL documento) { ElementoOrigen = nodo; MiembrosDimension = new List <MiembroDimension>(); ElementosAdicionales = new List <XmlElement>(); ListarMiembrosDimension(documento); }
/// <summary> /// Procesa los elementos dimensionales dentro de los nodos hijos del elemento origen /// </summary> /// <param name="documento">Documento de instancia que se está procesando actualmente</param> private void ListarMiembrosDimension(IDocumentoInstanciaXBRL documento) { foreach (XmlElement elementoHijo in ElementoOrigen.ChildNodes) { if (elementoHijo.NamespaceURI.Equals(EspacioNombresConstantes.DimensionInstanceNamespace) && (elementoHijo.LocalName.Equals(EtiquetasXBRLConstantes.ExplicitMemberElement) || elementoHijo.LocalName.Equals(EtiquetasXBRLConstantes.TypedMemberElement))) { var miembro = new MiembroDimension(); var qname = XmlUtil.ObtenerQNameConNamespace(elementoHijo.Attributes[EtiquetasXBRLConstantes.DimensionAttribute].Value, elementoHijo); miembro.QNameDimension = qname; //Buscar el concepto que corresponde a la dimensión if (documento.Taxonomia.ElementosTaxonomiaPorName.ContainsKey(qname) && documento.Taxonomia.ElementosTaxonomiaPorName[qname] is ConceptDimensionItem) { miembro.Dimension = documento.Taxonomia.ElementosTaxonomiaPorName[qname] as ConceptDimensionItem; } if (elementoHijo.LocalName.Equals(EtiquetasXBRLConstantes.ExplicitMemberElement)) { miembro.Explicita = true; qname = XmlUtil.ObtenerQNameConNamespace(elementoHijo.InnerText, elementoHijo); miembro.QNameMiembro = qname; if (qname != null) { //Buscar el concepto que corresponde al miembro if (documento.Taxonomia.ElementosTaxonomiaPorName.ContainsKey(qname) && documento.Taxonomia.ElementosTaxonomiaPorName[qname] is ConceptItem) { miembro.ItemMiembro = documento.Taxonomia.ElementosTaxonomiaPorName[qname] as ConceptItem; } } } else if (elementoHijo.LocalName.Equals(EtiquetasXBRLConstantes.TypedMemberElement)) { miembro.Explicita = false; //Colocar el contenido de los nodos del miembro tipificado if (elementoHijo.ChildNodes.Count > 0) { miembro.ElementoMiembroTipificado = elementoHijo.ChildNodes[0] as XmlElement; } } MiembrosDimension.Add(miembro); } else { //El elemento es otra cosa que no es una declaración de dimensión ElementosAdicionales.Add(elementoHijo); } } }
/// <summary> /// Constructor completo /// </summary> /// <param name="nodoSegmento"></param> /// <param name="documento"></param> public Segment(XmlNode nodoSegmento, IDocumentoInstanciaXBRL documento) : base(nodoSegmento, documento) { }
/// <summary> /// Constructor completo /// </summary> /// <param name="nodo"></param> /// <param name="documento"></param> public Scenario(XmlNode nodo, IDocumentoInstanciaXBRL documento) : base(nodo, documento) { }