Flash AS3 y XML: manera de solucionar los saltos de línea en htmlText que utiliza en el XML?

StackOverflow https://stackoverflow.com/questions/3011948

  •  26-09-2019
  •  | 
  •  

Pregunta

Estoy importar texto desde un archivo XML y estoy usando htmlText para tratar de mantener un poco de estilo con las etiquetas. Tengo tanto el tipo de letra normal y en negrita cara incrustada, y la negrita funciona bien. El problema es que anuncio espacios alrededor de las palabras en negrita como una sangría de párrafo y luego se hace un salto de línea después de ellos. Lo que está pasando, ¿hay una manera de solucionar?

fromxmlText.htmlText = theXML.contenttext;

Si me tire el texto desde un archivo txt que va a funcionar bien, pero sacándolo de un archivo XML que causa el formato de moda. lil ayuda?

¿Fue útil?

Solución

Para añadir HTML en XML que debe utilizar CDATA de lo contrario el HTML se considera parte de el documento XML.

por ejemplo.

<root>
    <someHtml><![CDATA[I can contain<br />html tags]]></someHtml>
    <somePlainText>I cannot contain html tags since they will be 
                   seen as XML nodes</somePlainText>
</root>

También asegúrese de que está guardando los archivos XML con los finales de línea Unix y codificado como UTF-8. Si está utilizando ventanas finales de línea (\r\n) entonces flash tiende a nuevas líneas de doble ambiente. Su editor debe permitirle especificar los finales de línea.

Otros consejos

Me importaba una dinámica de alimentación RSS en un anuncio Flash mío que tenía etiquetas HTML embebidos. Estaba teniendo el mismo problema. He utilizado expresiones regulares para buscar y reemplazar. Esta es la función que estaba usando. se puede utilizar prob mi código en expresiones regulares allí para hacer lo mismo. Parece que estábamos teniendo el mismo problema. Esperamos que esto ayude:

Función Parserover_feature (rover_feature: XML): void {

var s:String = rover_feature.items.item[0].article;
s = s.replace(/(?:<br>)+/gi, '<br>');
s = s.replace(/\n/g, '');
container.info_txt.htmlText = s
//trace (s);

}

Es difícil de decir sin ver el código XML, pero trate de tocar el violín con el mundial propiedades XML especialmente ignoreWhitespace . Dependiendo de sus finales de línea, también puede ser necesario para despojarlos antes de poner el texto en el campo de texto.

Si está incrustando a partir de XML a continuación, asegúrese de que está utilizando etiquetas CDATA para mostrar código de formato previo, de lo contrario se está dando salida el contenido de múltiples nodos en XML.

W3 escuelas para obtener más información.

También asegúrese de que su textField se establece en multiline antes de configurar su textField.htmlText = xml con
es decir.

var myText:TextField = new TextField();
myText.multiline = true;
myText.htmlText = (your xml node with the <br/ >);
addChild(myText);

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top