Flash AS3 и XML: способ исправить разрывы строк в htmlText, который использует теги <b>в xml? - PullRequest
1 голос
/ 10 июня 2010

Я импортирую текст из файла xml и использую htmlText, чтобы попытаться сохранить стилизацию с помощью тегов. У меня есть как обычный, так и жирный шрифт, и шрифт работает отлично. Проблема заключается в том, что он объявляет пробелы вокруг слов, выделенных жирным шрифтом, как абзацный отступ, а затем делает разрыв строки после них. Что происходит, есть ли способ исправить?

fromxmlText.htmlText = theXML.contenttext;

Если я извлеку текст из txt-файла, он будет работать нормально, но вытащить его из xml-файла вызовет странное форматирование. помогите?

Ответы [ 5 ]

3 голосов
/ 10 июня 2010

Чтобы добавить HTML в XML, вы должны использовать блоки CDATA , в противном случае HTML считается частью документа XML.

Например,

<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>

Также убедитесь, что высохраните ваши файлы XML с окончанием строки Unix и закодированы как utf-8.Если вы используете окончания строк в Windows (\r\n), то Flash стремится удвоить пробелы.Ваш редактор должен позволять вам указывать окончания строк.

1 голос
/ 20 мая 2011

Я импортировал динамический RSS-канал в мое объявление с встроенными тегами HTML. У меня была такая же проблема. Я использовал регулярные выражения, чтобы найти и заменить. Вот функция, которую я использовал. Вы можете использовать мой код регулярных выражений там, чтобы сделать то же самое. Похоже, у нас была такая же проблема. Надеюсь, это поможет:

функция 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);

}

0 голосов
/ 20 декабря 2012

Также убедитесь, что для вашего textField установлено значение multiline, прежде чем устанавливать textField.htmlText = xml с помощью
, т.е.

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

Надеюсь, это поможет.

0 голосов
/ 10 июня 2010

если вы встраиваете из xml, убедитесь, что вы используете теги CDATA для отображения предварительно отформатированного кода, в противном случае вы выводите содержимое нескольких узлов в XML.

см. w3 школы для получения дополнительной информации.

0 голосов
/ 10 июня 2010

Трудно сказать, не видя ваш XML, но попробуйте поиграться с глобальными свойствами XML особенно ignoreWhitespace .В зависимости от концов строк, вам также может потребоваться удалить их, прежде чем помещать текст в текстовое поле.

...