문제

<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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top