解析 XML 以打印带有每个单词的格式化属性的字符串

发布于 2024-12-06 11:04:38 字数 356 浏览 2 评论 0原文

我有一个 XML,其中包含以下类型的字段:

<mytext><![CDATA[ My name is <color value="FF0000">Bill</color>. ]]></mytext>

由于我是 E4X 方法的新手,我想知道是否有一种简单的方法(使用 E4X 方法)来打印内部文本:“我的名字是 Bill。”在文本区域中,并将单词“Bill”着色为红色。

一般情况是,如果我可以打印内部文本并使用 XML 标签来指定每个单词的文本格式属性。

E4X 是否支持这种类型的解析,或者我是否必须为这种情况编写自己的“小”解析器?

I have an XML which contains a field of the type:

<mytext><![CDATA[ My name is <color value="FF0000">Bill</color>. ]]></mytext>

Since I'm new to E4X methods, I wonder if there is a simple methodology (using E4X methods) in order to print the inner text: "My name is Bill." in a text area and having the word "Bill" colored i.e. red.

The generalized situation is, if i can print the inner text and use XML tags to specify formatting attributes of the text per word.

Do E4X supports this type of parsing, or do I have to program my own "little" parser for this situation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花开雨落又逢春i 2024-12-13 11:04:38

首先,让我们标准化 html 内容(我添加了 标记以使其有效):

var mytext:XML = XML("<mytext><![CDATA[<content>My name is <color value="FF0000">Bill</color>.</content>]]></mytext>");

下一步是解析给定的 XML:

var roughXML:XML = XML(mytext.text().toString());

然后您必须用标准标记替换自定义标记:

var output:XML = XML("<span/>");
for each(var tag:XML in roughXML.children())
{
    if (tag.name() == "color")
    {       
        var fontTag:XML = XML("<font/>");
        fontTag.@color = [email protected]();
        fontTag.appendChild(tag.text());
        output.appendChild(fontTag);
    }
    //you can add here any rule for substitution that you need
    else
    {
        output.appendChild(tag);
    }
}

最后,您可以使用 s:RicheEditableText 来显示文本

var textFlow:TextFlow = TextConverter.importToFlow(output.toXMLString(), TextConverter.TEXT_FIELD_HTML_FORMAT);
myRichEditableText.textFlow = textFlow;

First, let's normalize the html content (I added a <content> tag to make it valid):

var mytext:XML = XML("<mytext><![CDATA[<content>My name is <color value="FF0000">Bill</color>.</content>]]></mytext>");

Next step is to parse the given XML:

var roughXML:XML = XML(mytext.text().toString());

Then you have to substitute your custom tags with standard tags:

var output:XML = XML("<span/>");
for each(var tag:XML in roughXML.children())
{
    if (tag.name() == "color")
    {       
        var fontTag:XML = XML("<font/>");
        fontTag.@color = [email protected]();
        fontTag.appendChild(tag.text());
        output.appendChild(fontTag);
    }
    //you can add here any rule for substitution that you need
    else
    {
        output.appendChild(tag);
    }
}

And finally, you can use an s:RicheEditableText to display your text

var textFlow:TextFlow = TextConverter.importToFlow(output.toXMLString(), TextConverter.TEXT_FIELD_HTML_FORMAT);
myRichEditableText.textFlow = textFlow;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文