Se pueden convertir objetos XML y XMLList a valores de cadena. De forma similar, se pueden convertir cadenas en objetos XML y XMLList. También se debe tener en cuenta que todos los valores de atributos, nombres y valores de texto XML son cadenas. En las secciones siguientes se tratan todas estas formas de conversión de tipo XML.
Conversión de objetos XML y XMLList en cadenas
Las clases XML y XMLList incluyen un método
toString()
y un método
toXMLString()
. El método
toXMLString()
devuelve una cadena que incluye todas las etiquetas, los atributos, las declaraciones de espacios de nombres y el contenido del objeto XML. Para objetos XML con contenido complejo (elementos secundarios), el método
toString()
hace exactamente lo mismo que el método
toXMLString()
. Para objetos XML con contenido simple (los que contienen un solo elemento de texto), el método
toString()
devuelve únicamente el contenido de texto del elemento, como se indica en el siguiente ejemplo:
var myXML:XML =
<order>
<item id='1' quantity='2'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
<order>;
trace(myXML.item[0].menuName.toXMLString());
// <menuName>burger</menuName>
trace(myXML.item[0].menuName.toString());
// burger
Si se utiliza el método
trace()
sin especificar
toString()
ni
toXMLString()
, los datos se convierten con el método
toString()
de manera predeterminada, como se muestra en el código siguiente:
var myXML:XML =
<order>
<item id='1' quantity='2'>
<menuName>burger</menuName>
<price>3.95</price>
</item>
<order>;
trace(myXML.item[0].menuName);
// burger
Al utilizar el método
trace()
para depurar código, generalmente se deseará utilizar el método
toXMLString()
para que el método
trace()
devuelva datos más completos.
Conversión de cadenas a objetos XML
Se puede utilizar el constructor
new XML()
para crear un objeto XML de una cadena, de la manera siguiente:
var x:XML = new XML("<a>test</a>");
Si se intenta convertir una cadena en XML a partir de una cadena que representa datos XML no válidos o que no están bien formados, se emitirá un error en tiempo de ejecución, como se muestra a continuación:
var x:XML = new XML("<a>test"); // throws an error
Conversión de valores de atributos, nombres y valores de texto de tipo cadena
Todos los valores de atributos, nombres y valores de texto XML son del tipo de datos String y es posible que sea necesario convertirlos a otros tipos de datos. Por ejemplo, el código siguiente utiliza la función
Number()
para convertir valores de texto en números:
var myXML:XML =
<order>
<item>
<price>3.95</price>
</item>
<item>
<price>1.00</price>
</item>
</order>;
var total:XML = <total>0</total>;
myXML.appendChild(total);
for each (var item:XML in myXML.item)
{
myXML.total.children()[0] = Number(myXML.total.children()[0])
+ Number(item.price.children()[0]);
}
trace(myXML.total); // 4.95;
Si este código no utilizara la función
Number()
, interpretaría el operador + como el operador de concatenación de cadenas y el método
trace()
en la última línea emitiría lo siguiente:
01.003.95
|
|
|