Comunidad de diseño web y desarrollo en internet online

Como colocar etiquetas html en attributes xml?

Citar            
MensajeEscrito el 14 Sep 2010 08:26 am
Hola a todos,

Quisiera que alguien pudiera explicarme como debo de hacer para poder colocar etiquetas html en un xml con attributes.

Anteriormente para cargar un xml en donde si podia utilizar etiquetas html utilizaba el siguiente codigo:

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<xml>
    <titulo>NOMBRE DE LA EMPRESA</titulo>
    <subtitulo>CATEGORIA O INDUSTRIA</subtitulo>
    <cliente>Nombre de la Persona</cliente>
    <proyecto>Venta de Frutas y Verduras</proyecto>
    <direccion>Calle y Avenida</direccion>
    <status>Vigente</status>
    <link><![CDATA[<a href="http://www.midominio.com" target="_blank">www.midominio.com</a></font>]]></link>
    <verproyecto><![CDATA[<a href="http://www.midominio.com" target="_blank">ir al sitio</a></font>]]></verproyecto>
    <descripción><![CDATA[Espacio para mi texto de informacion</a>, o escribanos <font color="#00ccff"> <a href="mailto:[email protected]">[email protected]</a> </font>]]></descripción>    
</xml>



Hasta ahi todo me funcionaba correctamente, ya que yo creaba un xml independiente por cada empresa y como repito si podia colocar las etiquetas html, pero conforme fue creciendo el numero de empresas me era mas dificil ir organizando los archivos xml, por lo que alguien me sugirio que colocara todas las empresas en un mismo documento de xml y que usara attributes para diferenciar u organizar dentro del documento, y el codigo que utilize me quedo de la siguiente manera:

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<xml>
<proyecto1 titulo="NOMBRE DE LA EMPRESA" subtitulo="CATEGORIA O INDUSTRIA" cliente="Nombre de la persona" proyecto="Venta de Frutas y Verduras" direccion="Calle y Avenida" email="[email protected]" >
</proyecto1>

<proyecto2 titulo="NOMBRE DE LA EMPRESA 2" subtitulo="CATEGORIA O INDUSTRIA 2" cliente="Nombre de la persona 2" proyecto="Venta de Frutas y Verduras 2" direccion="Calle y Avenida 2" email="[email protected]" >
</proyecto2>

</xml>


Podria decir que todo funciona bien, ya que mi flash si recoge los datos, pero no logro colocar etiquetas html en el attribute email y quisiera colocar un href similar al que utilizaba antes para generar un link directo a la pagina del cliente, pero ya no puedo porque la sintaxis de este xml es distinta.

Alguien sabe si se puede colocar estas etiquetas dentro de un attribute?

Les agradezco de antemano por su ayuda y tiempo.

Saludos! ^^

Por Chapin

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Sep 2010 02:56 pm
pues si se puede si publicas con utf y usas codigo html á : &aacute; etc, sobre todo para los tags que no te permite incluir en atributos del nodo xml, no puedes iniciar un tag con <, debes usar &lt;

Código :

<nodo 
atrib1="[email protected]" 
atrib2="con_á_é_í_y_carac_espec_etc" 
unLink="'mailto:[email protected]'" 
tagshtml="&lt;mitag>Inicia aqui, poco usual&lt;mitag>"
 />

Aun asi creo que usar atributos es para informacion corta, mucho mejor usar nodos como contenedores, como lo has venido usando, y usar CDATA para incluir html, es lo mas convencional y la mejor forma a mi parecer de organizar tu informacion

Por comicSans

Claber

151 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Sep 2010 04:24 pm
Muchas gracias por tu respuesta!

A mi anteriormente me hubiera gustado colocar la info en nodos, pero no soy experto en el tema y como podras ver en el codigo que anteriormente estaba utilizando, ya habia encontrado la forma de lograrlo pero en documentos xml independientes y lo que quisiera es poder colocarlos en un mismo xml, pero ya no logro que mi flash lo cargue.

Por ejemplo yo pensaba utilizar algo parecido a esto:

Código XML :

<?xml version="1.0" encoding="utf-8"?> 
<xml> 
    <titulo>NOMBRE DE LA EMPRESA</titulo> 
    <subtitulo>CATEGORIA O INDUSTRIA</subtitulo> 
    <cliente>Nombre de la Persona</cliente> 
    <proyecto>Venta de Frutas y Verduras</proyecto> 
    <direccion>Calle y Avenida</direccion> 
    <status>Vigente</status> 
    <link><![CDATA[<a href="http://www.midominio.com" target="_blank">www.midominio.com</a></font>]]></link> 
    <verproyecto><![CDATA[<a href="http://www.midominio.com" target="_blank">ir al sitio</a></font>]]></verproyecto> 
    <descripción><![CDATA[Espacio para mi texto de informacion</a>, o escribanos <font color="#00ccff"> <a href="mailto:[email protected]">[email protected]</a> </font>]]></descripción>     
</xml> 
<xml> 
    <titulo>NOMBRE DE LA EMPRESA 2</titulo> 
    <subtitulo>CATEGORIA O INDUSTRIA 2</subtitulo> 
    <cliente>Nombre de la Persona 2</cliente> 
    <proyecto>Venta de Frutas y Verduras 2</proyecto> 
    <direccion>Calle y Avenida 2</direccion> 
    <status>Vigent 2e</status> 
    <link><![CDATA[<a href="http://www.midominio.com" target="_blank">www.midominio.com</a></font>]]></link> 
    <verproyecto><![CDATA[<a href="http://www.midominio.com" target="_blank">ir al sitio</a></font>]]></verproyecto> 
    <descripción><![CDATA[Espacio para mi texto de informacion</a>, o escribanos <font color="#00ccff"> <a href="mailto:[email protected]">[email protected]</a> </font>]]></descripción>     
</xml> 


A mi flash le tengo el siguiente script

Código ActionScript :

onClipEvent (load) {
   vacio.useHandCursor = false;
   var obj_xml = new XML();
   obj_xml.ignoreWhite = true;
   obj_xml.load("xml/clientes-data.xml");
   obj_xml.onLoad = function(exito) {
      if (exito) {
         titulo_txt.htmlText = obj_xml.firstChild.childNodes[0].firstChild.nodeValue;
                  subtitulo_txt.htmlText = obj_xml.firstChild.childNodes[1].firstChild.nodeValue;
                cliente_txt.htmlText = obj_xml.firstChild.childNodes[2].firstChild.nodeValue;
                  proyecto_txt.htmlText = obj_xml.firstChild.childNodes[3].firstChild.nodeValue;
                  tecnologia_txt.htmlText = obj_xml.firstChild.childNodes[4].firstChild.nodeValue;
                     link_txt.htmlText = obj_xml.firstChild.childNodes[5].firstChild.nodeValue;
                  status_txt.htmlText = obj_xml.firstChild.childNodes[6].firstChild.nodeValue;
                 verproyecto_txt.htmlText = obj_xml.firstChild.childNodes[7].firstChild.nodeValue;
                   descripcion_txt.htmlText = obj_xml.firstChild.childNodes[8].firstChild.nodeValue;
      } else {
         cliente_txt.htmlText = "Error, no se puede conectar con la base de datos";
      }
   };

}


Este codigo me sirve solo para cargar la empresa 1, pero si quisiera que me cargara la empresa 2 (que empieza en el nodo 9) aunque le cambie el numero de nodos ya no me funciona, por ejemplo:

Código ActionScript :

onClipEvent (load) {
   vacio.useHandCursor = false;
   var obj_xml = new XML();
   obj_xml.ignoreWhite = true;
   obj_xml.load("xml/clientes-data.xml");
   obj_xml.onLoad = function(exito) {
      if (exito) {
         titulo_txt.htmlText = obj_xml.firstChild.childNodes[9].firstChild.nodeValue;
                  subtitulo_txt.htmlText = obj_xml.firstChild.childNodes[10].firstChild.nodeValue;
                cliente_txt.htmlText = obj_xml.firstChild.childNodes[11].firstChild.nodeValue;
                  proyecto_txt.htmlText = obj_xml.firstChild.childNodes[12].firstChild.nodeValue;
                  tecnologia_txt.htmlText = obj_xml.firstChild.childNodes[13].firstChild.nodeValue;
                     link_txt.htmlText = obj_xml.firstChild.childNodes[14].firstChild.nodeValue;
                  status_txt.htmlText = obj_xml.firstChild.childNodes[15].firstChild.nodeValue;
                 verproyecto_txt.htmlText = obj_xml.firstChild.childNodes[16].firstChild.nodeValue;
                   descripcion_txt.htmlText = obj_xml.firstChild.childNodes[17].firstChild.nodeValue;
      } else {
         cliente_txt.htmlText = "Error, no se puede conectar con la base de datos";
      }
   };

}


Tienes una solucion para poder lograrlo?

Muchas gracias por tu ayuda!

Saludos! :cry:

Por Chapin

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Sep 2010 08:59 pm
que tal, creo tendras que revisar un poco tu xml porque trae algunos errores: No puedes, o no debes, usar nombres de nodos con acentos (descripción), por ahi va tambien no usar nombres de nodos ni atribs que empiecen en x,m,l, Y una cosa mas, no te carga la nformacion como dices porque no tienes un nodo padre

Código :

<xml>
   <nodo>...
</xml>
<xml>
   <nodo>...
</xml>

la estructura debe de estar dentro de un nodo padre

Código :

<nodo>
  <objxml>
     <titulo>NOMBRE DE LA EMPRESA</titulo>  
    <subtitulo>CATEGORIA O INDUSTRIA</subtitulo>  
    <cliente>Nombre de la Persona</cliente>  
    <proyecto>Venta de Frutas y Verduras</proyecto>  
    <direccion>Calle y Avenida</direccion>  
    <status>Vigente</status>  
    <link><![CDATA[<a hre  etc....ont>]]></link>  
    <verproyecto><![CDATA[<a href="... etc </a></font>]]></verproyecto>  
    <descripcion><![CDATA[  .... etc ]]></descripcion>
  <objxml>
  <objxml>
     <titulo>NOMBRE DE LA EMPRESA</titulo>  
    <subtitulo>CATEGORIA O INDUSTRIA</subtitulo>  
    ... etc ...
    <verproyecto><![CDATA[<a href="... etc </a></font>]]></verproyecto>  
    <descripcion><![CDATA[  .... etc ]]></descripcion>
  <objxml>
</nodo>

Ahora, al momento de cargar en el codigo AS ya puedes elegir que numero de nodo quieres mostrar:

Código PHP :

var myArr:Array = new Array("titulo_txt",
               "subtitulo_txt",
               "cliente_txt",
               "proyecto_txt",
               "tecnologia_txt",
               "link_txt",
               "status_txt",
               "verproyecto_txt",
               "descripcion_txt");

var obj_xml:XML = new XML(); 
obj_xml.ignoreWhite = true; 
obj_xml.onLoad = function(exito:Boolean) { 
      if (exito) { 
      trace('Nodo padre = ' + obj_xml.firstChild.childNodes.length);
      // Aqui tu decide que nodo es el que quieres mostrar
      // P.e. lo puedes decidir en una variable anteriormente definida
      var currentNod:Number = 0;
      // currentNod = random(obj_xml.firstChild.childNodes.length);
      trace("Se muestra informacion del nodo "+currentNod);
      mostrarUnNodo(obj_xml.firstChild.childNodes[currentNod]);
      } else { 
        // cliente_txt.htmlText = "Error, ..."; 
      obj_xml.load("clientes-data.xml");
      } 
}; 

obj_xml.load("clientes-data.xml"); 

// Muestra la informacion del nodo solicitado
function mostrarUnNodo (param:XMLNode) {
   trace ('::Datos del Nodo (clientes-data.xml)::');
   var myNodo = param.childNodes;
   var lengthChain:Number = myNodo.length;
   for (var i:Number=0; i<lengthChain; i++)
   {
   var contenido:String = myNodo[i].firstChild.nodeValue;
   trace (i+'/'+lengthChain + '['+myArr[i]+'] >>> '+contenido);
   // aqui puedes asignar el String al TextField, p.e.
   // _root[myArr[i]].htmlText = contenido;
   }
}

Por comicSans

Claber

151 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.