`
lipbb
  • 浏览: 68700 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

flex 中XML操作的一个陷阱

阅读更多
先来段代码
			//测试
			var xml1:XML =  
				<menu>
					<menuitem code="a"   lv="1"/>
					<menuitem code="b"   lv="2"/>
					<menuitem code="c"   lv="3"/> 
					<menuitem code="d"   lv="2" />
					<menuitem code="e"   lv="2" />
					<menuitem code="f"   lv="2" />
					<menuitem code="g"   lv="2" />
				</menu>;

			var xml2:XML = new XML("<menu>" + xml1.menuitem.(@lv == 1) + "</menu>");
			var xml3:XML = new XML("<menu>" + xml1.menuitem.(@lv == 2) + "</menu>");
			var xml4:XML = new XML("<menu>" + xml1.menuitem.(@lv == 3) + "</menu>");
		
			trace("////////////////////////////");
			trace("xml2 = " + xml2);
			trace("////////////////////////////");
			trace("xml3 = " + xml3);
			trace("////////////////////////////");
			trace("xml4 = " + xml4);

大家认为它应该输出什么?
实际的结果是:
////////////////////////////
xml2 =
////////////////////////////
xml3 = <menu>
  <menuitem code="b" lv="2"/>
  <menuitem code="d" lv="2"/>
  <menuitem code="e" lv="2"/>
  <menuitem code="f" lv="2"/>
  <menuitem code="g" lv="2"/>
</menu>
////////////////////////////
xml4 =

  怎么会是这个样子?难道1和3不行,只有2才行?或者说只有一条的数据不能匹配?为啥呢?把 new xml换成<menu/>.appendChild(xxx) 也不行!

加断点调试发现,确实匹配到了,但就是没显示出来!

后来终于明白:
这里用+连接xml就自动调用了toString()方法。由于单条xml的toString()输出的是空串(就是它的文本子节点),而多条xml也就是xmllist的toString()输出的是所有标签,所以导致了这个结果。

而要让xml输出标签需要用toXMLString()方法
改成 new XML("<menu>" + xml1.menuitem.(@lv == 1).toXMLString() + "</menu>");
分享到:
评论

相关推荐

    Effortless Flex 4 Development

    数据绑定是Flex 4中的一个关键特性,它允许开发者轻松地将数据源与UI组件连接起来,实现实时更新。书中深入探讨了数据绑定的概念和实现方式,以及如何处理用户事件,如点击、滚动等,以响应用户操作,提供流畅的用户...

    flex和java整合常见问题分析

    本文将针对搭建Flex+Java+Oracle项目的实践过程中所遇到的问题进行深入剖析,并提供相应的解决方案,帮助开发者们规避潜在的技术陷阱。 #### 二、环境配置与搭建 1. **开发环境需求**: - **JDK版本**:1.6(建议...

    使用granite实现flex交互java

    在IT行业中,Granite是Adobe Flex与Java之间交互的一个关键组件。这个技术允许开发者利用Flex的富客户端界面优势,结合Java后端的强大处理能力,构建高效且用户友好的应用程序。在本篇讨论中,我们将深入探讨如何...

    Flex数据绑定[收集].pdf

    在Flex中,数据绑定表达式通常在MXML中使用大括号({})表示,用于将一个对象的属性值与另一个对象的属性值连接起来。例如,`&lt;s:Label id="label" text="{xml.user.name}" /&gt;`将XML对象的"user"子节点的"name"属性绑定...

    Flex_RPC错误大全

    标题和描述均提到“Flex_RPC错误大全”,这表明文章旨在汇总和解析在使用Flex与.NET进行通信时常见的错误。...通过深入理解每个错误背后的原理,可以避免常见的陷阱,提升项目的开发效率和用户体验。

    Flex 3 A Beginners Guide

    - **Flex Builder**:一个集成开发环境(IDE),支持MXML和ActionScript的编写与调试。 #### 四、界面定制与优化 - **样式**(Styles):用于改变组件外观的设计元素。 - **皮肤**(Skins):允许更改控件的外观和...

    SNMP-demo代理端代码

    【标题】"SNMP-demo代理端代码"是一个关于如何在Java和Spring框架中集成SNMP(简单网络管理协议)的示例项目,用于构建监控管理平台。SNMP是一种广泛使用的网络管理和故障排查工具,它允许远程监控网络设备的状态和...

    livedocs_blazeDS

    1. **快速入门**:引导开发者如何设置环境,创建第一个BlazeDS项目,并实现客户端与服务器的简单通信。 2. **API参考**:详细列出BlazeDS提供的类、接口、方法等,帮助开发者理解和使用各种功能。 3. **配置指南**...

    gsoap网络资源汇总和相关连接

    - Flex是一个灵活的词法分析器生成器,用于识别输入文本中的词法单元。 2. **使用Bison和Flex的意义:** - 在处理复杂的语言结构时,Bison和Flex可以帮助生成高效的解析器。 - 对于开发gSOAP这样的工具而言,能够...

Global site tag (gtag.js) - Google Analytics