하위 속성을 기반으로 한 E4X 쿼리
-
05-09-2019 - |
문제
나는 "이름"속성이 "필요한"속성이있는 "메타 데이터"노드를 포함하는 모든 "액세서"노드를 반환하는 E4X 쿼리 (아래 XML에서)를 실행하려고합니다.
나는 시도했다 ...
type.accessor.(metadata.@name == "Required")
...하지만 메타 데이터 노드가 1 개 밖에없는 액세서 노드에만 적용됩니다.
단서가 있습니까?
<type name="org.springextensions.actionscript.ioc.testclasses::PersonRequiredName" base="org.springextensions.actionscript.ioc.testclasses::Person" isDynamic="false" isFinal="false" isStatic="false">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\PersonRequiredName.as"/>
<arg key="pos" value="935"/>
</metadata>
<extendsClass type="org.springextensions.actionscript.ioc.testclasses::Person"/>
<extendsClass type="Object"/>
<constructor>
<parameter index="1" type="String" optional="true"/>
<parameter index="2" type="int" optional="true"/>
<parameter index="3" type="Boolean" optional="true"/>
</constructor>
<accessor name="name" access="readwrite" type="String" declaredBy="org.springextensions.actionscript.ioc.testclasses::PersonRequiredName">
<metadata name="Required"/>
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\PersonRequiredName.as"/>
<arg key="pos" value="1163"/>
</metadata>
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\PersonRequiredName.as"/>
<arg key="pos" value="1249"/>
</metadata>
</accessor>
<variable name="age" type="int">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="1070"/>
</metadata>
</variable>
<accessor name="siblings" access="readonly" type="Array" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="3724"/>
</metadata>
</accessor>
<method name="addFriend" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person" returnType="void">
<parameter index="1" type="org.springextensions.actionscript.ioc.testclasses::Person" optional="false"/>
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="2424"/>
</metadata>
</method>
<method name="toString" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person" returnType="String">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="3181"/>
</metadata>
</method>
<method name="helloWorld" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person" returnType="String">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="2159"/>
</metadata>
</method>
<method name="equals" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person" returnType="Boolean">
<parameter index="1" type="org.springextensions.actionscript.ioc.testclasses::Person" optional="false"/>
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="1932"/>
</metadata>
</method>
<method name="hasSibling" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person" returnType="Boolean">
<parameter index="1" type="org.springextensions.actionscript.ioc.testclasses::Person" optional="false"/>
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="2789"/>
</metadata>
</method>
<accessor name="writeObject" access="writeonly" type="Object" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="3950"/>
</metadata>
</accessor>
<variable name="colleague" type="org.springextensions.actionscript.ioc.testclasses::Person">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="1132"/>
</metadata>
</variable>
<variable name="anArray" type="Array">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="1166"/>
</metadata>
</variable>
<method name="addSibling" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person" returnType="void">
<parameter index="1" type="org.springextensions.actionscript.ioc.testclasses::Person" optional="false"/>
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="2605"/>
</metadata>
</method>
<variable name="anObject" type="Object">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="1197"/>
</metadata>
</variable>
<accessor name="friends" access="readwrite" type="Array" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="3583"/>
</metadata>
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="3645"/>
</metadata>
</accessor>
<accessor name="isMarried" access="readwrite" type="Boolean" declaredBy="org.springextensions.actionscript.ioc.testclasses::Person">
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="3434"/>
</metadata>
<metadata name="__go_to_definition_help">
<arg key="file" value="C:\workspace\spring-actionscript\core\src\test\actionscript\org\springextensions\actionscript\ioc\testclasses\Person.as"/>
<arg key="pos" value="3502"/>
</metadata>
</accessor>
</type>
해결책
이것은 작동하는 것 같습니다 :
type.accessor.(hasOwnProperty("metadata") && metadata.attribute("name").contains("Required"))
다른 팁
그것은 괄호에 관한 것입니다.
대신 시도해보십시오 (클리너)
var list:XMLList;
xmlList = type.accessor.metadata.(@name == "Required");
제휴하지 않습니다 StackOverflow