下面是测试用例的一些代码。我不明白为什么前两个查询产生结果但第三个不产生结果。有什么想法吗?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onInit();" >
<mx:Script>
<![CDATA[
private function onInit():void{
var someXML:XML =
<libs>
<library libLevel="System">
<type typeName="Established Problem" typeID="2">
<template templateName="asthma" templateAbbr="asthma-fu" templateInsertDate="05/03/2004" templateID="14"/>
<template templateName="gastroesophageal reflux" templateAbbr="GERD" templateInsertDate="05/03/2004" templateID="15"/>
</type>
</library>
</libs>;
trace("library");
trace(someXML.library.(@libLevel == "System"));//works as expected
trace("type");
trace(someXML.library.type.(@typeID == "2"));//works as expected
trace("template");
trace(someXML.library.type.template.(@templateID == "14"));//returns nothing
}
]]>
</mx:Script>
</mx:Application>
如果我在没有正确查询的节点下面添加一个虚拟节点,那么工作是什么。
var someXML:XML =
<libs>
<library libLevel="System">
<type typeName="Established Problem" typeID="2">
<template templateName="asthma" templateAbbr="asthma-fu" templateInsertDate="05/03/2004" templateID="14">
<blah/>
</template>
<template templateName="gastroesophageal reflux" templateAbbr="GERD" templateInsertDate="05/03/2004" templateID="15">
<blah/>
</template>
</type>
</library>
</libs>;
为什么只有在它下面有节点时它才有效?
答案 0 :(得分:3)
您收到了一个结果,只是XML.toString
(由trace()
调用)返回简单XML
节点的内容,而您的单个结果节点没有内容。 (实际上,您的结果是单节点XMLList
,因此它的作用类似于XML
节点。)
要看到差异:
var x:XMLList = someXML.library.type.template.(@templateID == "14");
trace(x); // empty string
trace(x.toXMLString()); // expected XML node