`
hehailin1986_163.com
  • 浏览: 153669 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ActionScript 2 – XML CDATA returns undefined, or htmlText doesn’t work!

阅读更多
http://www.psyked.co.uk/tools/actionscript-2-xml-cdata-returns-undefined-or-htmltext-doesnt-work.htm

在AS2中解析XMl文件的时候出现了一个问题,就是xml节点中有CDATA部件,使用attributes.nodeValue之后再trace的时候显示undefined。找了半天终于找到解决办法了。


ActionScript 2 – XML CDATA returns undefined, or htmlText doesn’t work!
Posted by James - 17/09/08 at 08:09:13 am
The problem:
Your XML file is fine, it validates as XML.  The file encoding and the xml declaration encoding match.  You can parse the XML, but when you try and put html inside a CDATA element, and then populate a dynamic textbox with it, either your formatting doesn’t work (the text still has <b> tags in) or it returns ‘undefined’.

The solution:
This could actually be a twofold problem, and is not helped along by Flash’s quirks.  Its most likely that you’re either;

Accessing the XMLNode incorrectly,
Or

Being tripped up by the Flash players’ slightly dodgy XML parsing.
Accessing CDATA correctly
Now, the way that you should be accessing CDATA in Flash is perhaps a little different to what you’d expect.  CDATA should have no effect on how you access your XML – it’s a parsing instruction, right?.  Well Flash treats it as part of the XML structure, so if you want to access the data inside the CDATA element, you have to treat the CDATA as a node in itself.  Its actually quite easy though.  Instead of accessing the contents of CDATA with childNode.nodeValue or childNodes, you should be using childNode.firstChild.nodeValue.

So childNode is the parent node of the CDATA element, firstChild is the actual CDATA instruction, and nodeValue extracts everything that’s inside the CDATA element.

That hopefully, will solve any problems with ‘undefined’ appearing when you try to access data inside a CDATA element.

Flash players’ dodgy XML parsing?
Yes indeedy, Flash does do things a little different.  CDATA is great because you can put nearly anything inside it, and the XML will still parse correctly.  Whatever’s inside your CDATA should not be interpreted by anything else, and won’t break anything that tries to read it.

Flash however, still does a little bit of work to it.  If you run a few traces on HTML formatting that you try to send via CDATA, you’ll notice that all of the < and > characters are transformed into their encoded versions, &lt; and &gt;. This poses a minor problem because if you just try to whack HTML from your XML into a dynamic textbox, the formatting won’t work properly and you’ll get the characters < and > appearing, along with the HTML formatting commands – because the < and > characters are encoded.

Annoying yes, easy to fix – yes.

Find and replace is your ally here – or as near as we can easily get;

xmlcdata.split(’&lt;’).join(’&gt;’).split(’>’).join(’>’)

Run that on your string of text before you put it into your textbox and you’re good to go!

Quirks?
What you also might find is that HTML formatted textboxes could actually display the contents of a CDATA node without the CDATA node being correctly accessed.  If you access the node with the childNodes property, and put that into your textbox, then the contents will display, but not with HTML formatting.

What Flash is actually doing is grabbing the CDATA element (and everything inside it).  Assigning this variable to a textbox should fail, but in actual fact it works – to a certain extent.  It seems like the HTML formatting of the textbox allows it to parse the XML element and then consiquently display the content within.  The problem then comes when you want to manipulate this data – the contents of the textboxes’ text is not actually a string, but an XMLNode.  Weird, huh?
分享到:
评论

相关推荐

    加载解析xml数据 actionscript3.0

    在ActionScript 3.0(AS3)中,XML(eXtensible Markup Language)是一种常用的数据交换格式,常用于应用程序与服务器之间的通信。本文将深入探讨如何在AS3中加载和解析XML数据,结合提供的文件,我们可以通过以下...

    Flash-XML-Menu.rar_FLASH XML_actionscript 2.0 me_actionscript2 x

    标题中的"Flash-XML-Menu.rar"表明这是一个使用Flash技术创建的XML菜单系统,而"FLASH XML_actionscript 2.0 me_actionscript2 x"暗示这个项目是基于ActionScript 2.0编程语言实现的。ActionScript是Adobe Flash平台...

    Adobe Flash 中的 ActionScript 2

    ActionScript 2.0 是 Adobe Flash 平台中用于创建交互式内容的主要脚本语言。在 Flash 中,ActionScript 允许开发者编写控制动画、处理用户输入、与服务器通信等功能的代码。下面是关于 ActionScript 2.0 中变量、...

    actionscript程序 图片轮换结合xml

    标题中的“actionscript程序 图片轮换结合xml”指的是使用ActionScript编程语言,通过与XML文件的交互,实现动态的图片轮播效果。ActionScript是Adobe Flash平台的主要脚本语言,广泛应用于创建富互联网应用程序...

    Flash ActionScript3+XML动态相册

    【Flash ActionScript3+XML动态相册】是一个利用Adobe Flash软件和ActionScript3编程语言,结合XML文件来创建的交互式多媒体项目。这种技术在早期的网页设计中被广泛运用,用于实现动态展示图片的相册功能。以下是...

    flash actionscript3+XML+SWFProfiler+PV3D制作环绕镜面相册.zip_actionscript入门

    《使用ActionScript3、XML、SWFProfiler与PV3D创建环绕镜面相册的实践指南》 在当今数字媒体领域,Flash技术以其强大的交互性和动态性被广泛应用于网页设计和动画制作。ActionScript3作为Flash的核心编程语言,极大...

    ActionScript 基于flash+xml制作的课件

    总之,"ActionScript 基于flash+xml制作的课件"是一个结合了编程和教育的项目,它展示了如何利用ActionScript的交互性和XML的结构化数据来创建生动的教学资源。对于想要提升ActionScript技能或探索多媒体教育领域的...

    as 3.0读取XML

    在AS 3.0(ActionScript 3.0)中,读取XML文件是一项常见的任务,特别是在构建富互联网应用程序(RIA)时。XML作为一种轻量级的数据交换格式,被广泛用于存储和传输数据。本教程将详细介绍如何在AS 3.0中读取XML文件...

    ActionScript 2

    一步一步学ActionScript 2

    AS2 加载XML播放器

    AS2(ActionScript 2.0)是一种早期的脚本语言,用于开发Adobe Flash平台上的交互式内容。在本文中,我们将深入探讨如何使用AS2创建一个XML加载的播放器,以及实现这一功能的关键知识点。 首先,理解XML的用途至关...

    一个通过XML技术实现 ASP.NET 与ActionScript 3.0紧密集成的程序代码

    2. **序列化对象为XML**:ASP.NET还支持对象到XML的自动序列化,如使用`XmlSerializer`类,这使得复杂的数据结构也能轻松转换为XML格式。 3. **发送XML数据**:通过HTTP POST或GET请求,将XML数据发送到客户端。...

    ActionScript 3.0 API文档(CHM+HTML最新中文完整)

    具有关使用 XML 支持补间动画和 FLVPlayback 字幕的参考信息的附录。 具有关对 Adobe AIR 使用数据库的参考信息的附录。 有多种途径可获得此参考:在作为创作工具一部分的“帮助”面板中,以及 Adobe 网站上的 ...

    漂亮的网页版flash xml

    标题中的“漂亮的网页版flash xml”指的是在网页中使用Flash技术结合XML文件来实现的一种动态展示效果。Flash是一种广泛应用于创建交互式动画、多媒体内容和应用程序的软件平台,而XML(Extensible Markup Language...

    一步一步学ActionScript 2

    ActionScript 2 是一种基于ECMAScript(与JavaScript相似)的脚本语言,主要用于Adobe Flash平台,用于创建交互式网页内容、动态动画以及富互联网应用(RIA)。在"一步一步学ActionScript 2"的学习资源中,你将深入...

    ActionScript 2.rar

    ActionScript 2是一种基于ECMAScript的脚本语言,主要用于Adobe Flash平台,为动画和交互式内容提供动力。在ActionScript 2的时代,它成为创建动态网页、游戏和富互联网应用(RIA)的关键技术。这个名为...

    Actionscript中文帮助文档

    6. **ActionScript与XML/SWF/AAM整合**:ActionScript可以处理XML数据,与SWF(Shockwave Flash)文件进行交互,以及使用Action Message Format(AAM)进行组件通信。 7. **错误处理**:理解如何使用try-catch语句...

    ActionScript

    6. **网络通信**:ActionScript支持通过Socket、XMLSocket、URLLoader等类进行网络通信,可以用来加载外部数据(如XML、JSON),实现与服务器的交互。 7. **音频和视频处理**:通过Flash Media Server和NetStream类...

    ActionScript语句中文全解

    ActionScript是一种基于ECMAScript规范的编程语言,主要用于Adobe Flash平台,用于创建交互式富媒体内容,如网页动画、游戏和应用程序。随着HTML5的兴起,ActionScript在现代Web开发中的应用已经减少,但仍有大量的...

    spring actionscript 入门例子

    Spring ActionScript 是一个开源框架,它将 Spring 框架的核心概念和功能带入了 Adobe Flex 和 ActionScript 开发环境中。这个入门例子旨在帮助初学者理解如何在 Flex 或 ActionScript 项目中应用 Spring ...

    ActionScript 3.0语法参考手册

    ### ActionScript 3.0 运算符详解 #### 一、加法运算符 `+` 加法运算符用于将两个数值相加。在ActionScript 3.0中,它还可以用于字符串连接。 **示例代码:** ```actionscript var x:Number = 5; var y:Number = ...

Global site tag (gtag.js) - Google Analytics