이 XML 쿼리가 작동하지 않는 이유는 무엇입니까?
-
20-09-2019 - |
문제
그녀는 테스트 케이스에 대한 일부 코드입니다. 처음 두 쿼리가 결과를 낳는 이유를 이해하지 못하지만 세 번째 쿼리는 그렇지 않습니다. 어떤 아이디어?
<?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>;
아래에 노드가있는 경우에만 작동하는 이유는 무엇입니까?
해결책
당신은 결과를 얻고 있습니다. XML.toString
(호출 trace()
) 단순한 내용을 반환합니다 XML
노드와 단일 결과 노드에는 내용이 없습니다. (실제로 결과는 단일 노드입니다 XMLList
, 그래서 그것은 an처럼 행동합니다 XML
마디.)
차이점을 보려면 :
var x:XMLList = someXML.library.type.template.(@templateID == "14");
trace(x); // empty string
trace(x.toXMLString()); // expected XML node
제휴하지 않습니다 StackOverflow