Estoy trabajando para leer un xml a través de un script de diseño y crear cuadros de texto. Dado este xml:
<?xml version="1.0" encoding="UTF-8"?> <root> <project name="IPS300980XX_NEW" pagecount="50"> <styles> <style nome="xxx" font="Arial" fontsize="10" bold="2" center="2" /> <style nome="yyy" font="Times" fontsize="24" bold="1" center="1" /> <style nome="zzzz" font="Helvetica" fontsize="22" bold="2" center="1" /> </styles> </project> </root>
Estoy tratando de recorrer los nodos de "estilo", sin éxito. el código que estoy usando es el siguiente (pero probé con varias combinaciones de xmlelements, child, items, lo que sea :-(sin éxito).
"myxml" es el documento xml recién abierto. Cada variable tiene los valores esperados excepto "getTheStyle" (y en consecuencia "test").
function creastili(){ var styles = myxml.project.styles; var list = styles.child("style"); var getTheStyle = ""; for(var i = 0; i < list.length(); i++){ getTheStyle = list[i]; test = getTheStyle.toString(); //getTheStyle is always empty. } }
¡Cualquier ayuda sería realmente apreciada! Muchísimas gracias.
Quizás tenga que usar toXMLString()
en lugar de toString()
.
Este código funciona para mí:
var xml = '''<?xml version="1.0" encoding="UTF-8"?> <root> <project name="IPS300980XX_NEW" pagecount="50"> <styles> <style nome="xxx" font="Arial" fontsize="10" bold="2" center="2" /> <style nome="yyy" font="Times" fontsize="24" bold="1" center="1" /> <style nome="zzzz" font="Helvetica" fontsize="22" bold="2" center="1" /> </styles> </project> </root>'''; function creastili(xml) { var root = new XML(xml); // native Extendscript XML parser var list = root.project.styles.children(); for(var i = 0; i < list.length(); i++){ var getTheStyle = list[i]; var test = getTheStyle.toXMLString(); alert(test); } } creastili(xml);
Puede obtener atributos de un 'estilo' de esta manera:
var root = new XML(xml); var style = root.project.styles.children()[0]; var name = style.@nome; var font = style.@font; var size = style.@fontsize; // etc alert([name, font, size].join('\n'));