Flex E4X- 여러 속성으로 선택하십시오
-
19-09-2019 - |
문제
<EFM>
<projects>
<project name="EFM Columbus Supply Chain Project">
<characteristics>
<characteristic name="Types of Data">
<textDescription></textDescription>
<options>
<option name="Commodity Flow" value="True"/>
<option name="Industry Assets" value="False"/>
<option name="Trade Data" value="True"/>
<option name="Infrastructure" value="False"/>
<option name="Economic Data" value="False"/>
<option name="Benefits Information" value="True"/>
<option name="Supply Chain Event Data" value="False"/>
<option name="Physical Movement Data" value="False"/>
<option name="Other" value="True"/>
</options>
</characteristic>
</characteristics>
</project>
</projects>
</EFM>
이 기준으로 노드의 xmllist를 선택하고 싶습니다.
<Projects>.<project>.@name = x && <Projects>.<project>.<characteristics>.<characteristic>.<options>.<option>.(@name == y && @value == z)
주어진 프로젝트 이름에 대한 두 속성 [이름 및 값]에 의해 본질적으로 쿼리
해결책
trace(xml.projects.project.(@name == "EFM Columbus Supply Chain Project").characteristics.characteristic.options.option.(@name == "Other" && @value == "True").toXMLString());
//traces <option name="Other" value="True"/>
//broken down to fit in the screen:
trace(
xml.projects.project.(
@name == "EFM Columbus Supply Chain Project"
).characteristics.characteristic.options.option.(
@name == "Other" && @value == "True"
).toXMLString()
);
업데이트 : 옵션 태그 대신 프로젝트 태그를 가져 오려는 경우 :
var xml:XML =
<EFM>
<projects>
<project name="EFM 1" id="wrong">
<characteristics>
<characteristic name="Types of Data">
<options>
<option name="Benefits Information" value="True"/>
<option name="Supply Chain Event Data" value="False"/>
<option name="Physical Movement Data" value="False"/>
<option name="Other" value="True"/>
</options>
</characteristic>
</characteristics>
</project>
<project name="EFM 1" id="right">
<characteristics>
<characteristic name="Types of Data">
<options>
<option name="Benefits Information" value="True"/>
<option name="Supply Chain Event Data" value="False"/>
<option name="Physical Movement Data" value="False"/>
<option name="Other" value="False"/>
</options>
</characteristic>
</characteristics>
</project>
<project name="EFM 2" id="wrong">
<characteristics>
<characteristic name="Types of Data">
<options>
<option name="Benefits Information" value="True"/>
<option name="Supply Chain Event Data" value="False"/>
<option name="Physical Movement Data" value="False"/>
<option name="Other" value="False"/>
</options>
</characteristic>
</characteristics>
</project>
</projects>
</EFM>;
E4X :
trace(xml.projects.project.(@name == "EFM 1" && characteristics.characteristic.options.option.(@name == "Other").@value == "False").toXMLString());
//broken down to fit in the screen
trace(
xml.projects.project.(
@name == "EFM 1" && characteristics.characteristic.options.option.(
@name == "Other"
).@value == "False"
).toXMLString()
);
출력 :
<project name="EFM 1" id="right">
<characteristics>
<characteristic name="Types of Data">
<options>
<option name="Benefits Information" value="True"/>
<option name="Supply Chain Event Data" value="False"/>
<option name="Physical Movement Data" value="False"/>
<option name="Other" value="False"/>
</options>
</characteristic>
</characteristics>
</project>
다른 팁
@amarghosh query는이 경우 예상되는 프로젝트를 반환하지 않습니다. <option>
노드는 동일합니다 <characteristic>
노드
나는 프로젝트를 선택하려고합니다
<characteristics>.<characteristic>.(@name == "Frequency of Data Sharing")
&& <characteristics>.<characteristic>.<options>.<option>.(@Near Real Time == "True")
using the query
projectsXML.projects.project.(
characteristics.characteristic.(@name == prjCharacteristicsFilter)
&& characteristics.characteristic.options.option.(@name == s).@value == "True") ;
다음은 XML입니다.
<EFM>
<projects>
<project id="2" name="EFM Columbus Supply Chain Project">
<characteristics>
<characteristic name="Frequency of Data Sharing" projectPropertyName="sharingFreqArrayColl">
<textDescription></textDescription>
<options>
<option name="Near Real Time" value="True"/>
<option name="Hourly" value="False"/>
<option name="Daily" value="False"/>
<option name="Periodically" value="False"/>
<option name="One Time" value="False"/>
</options>
</characteristic>
<characteristic name="Frequency of Update of Data" projectPropertyName="updateFreqArrayColl">
<textDescription></textDescription>
<options>
<option name="Near Real Time" value="False"/>
<option name="Hourly" value="True"/>
<option name="Daily" value="False"/>
<option name="Periodically" value="False"/>
<option name="One Time" value="False"/>
</options>
</characteristic>
</characteristics>
</project>
</projects>
</EFM>
제휴하지 않습니다 StackOverflow