2010-01-06 2 views
2
<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 узлов по этим критериямFlex e4x - выбор по нескольким атрибутам

<Projects>.<project>[email protected] = x && <Projects>.<project>.<characteristics>.<characteristic>.<options>.<option>.(@name == y && @value == z) 

По существу запроса обоими атрибутами [имя и значение] для данного имени проекта

+0

+1. Спасибо, что задали вопрос: я узнал, что некоторые e4x пытаются ответить на этот вопрос. – Amarghosh

+0

Спасибо, что нашли время, чтобы подробно объяснить :) – captonssj

ответ

3
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() 
); 

UPDATE: Только в случае, если вы хотите получить тег проекта вместо опции тега:

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")[email protected] == "False").toXMLString()); 

//broken down to fit in the screen 
trace(
    xml.projects.project.(
    @name == "EFM 1" && characteristics.characteristic.options.option.(
     @name == "Other" 
    )[email protected] == "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> 
+0

@Amarghosh. Ваш запрос не выполняется в специальном случае. См. Ниже. – captonssj

0

@Amarghosh Ваш запрос не возвращает ожидаемый проект на этом случае, когда список <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)[email protected] == "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> 
+0

Каковы значения 'prjCharacteristicsFilter' и' s'? – Amarghosh

+0

«Частота обмена данными» – captonssj

 Смежные вопросы

  • Нет связанных вопросов^_^