Как найти конкретные данные XML по имени / значению атрибута во флэш-AS2? - PullRequest
0 голосов
/ 31 марта 2012

С учетом следующего кода XML:

 <set name="thumbsBooks">
     <set name="pdf">
         <thumb>Data I want to access</thumb>
         <thumb>Data I want to access</thumb>
     </set>
     <set name="printed">
         <thumb>Data I don't want to access</thumb>
         <thumb>Data I don't want to access</thumb>
     </set>
 <set>

Я хочу иметь возможность получать данные, содержащиеся в тегах «thumb», используя значение атрибута «name» родительского тега в качестве селектора, что-то похожее на то, что вы сделали бы в jQuery: $ ('set [name = " PDF "] ') найти (.' палец ');

Есть ли такой метод в Action Script 2 (нельзя использовать AS3)?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2012

AS2 раньше имел реализацию XPath, даже два iirc. Они оба высосаны за пределы возможной причины, поэтому я не советую вам их использовать, но это решит эту и подобные проблемы очень просто.

http://osflash.org/xpath4as2 вот что я мог найти. Было также что-то в пакете mx. *, Но это ужасного качества ...

Если вы ограничены версией проигрывателя, а не конкретной языковой версией, я бы посоветовал вам взглянуть на Haxe. У него есть хороший API для работы с XML, а затем обычный DOM API, который есть в AS2.

Раньше у меня был класс-обертка XML, чтобы уменьшить многословность операций, связанных с XML, но я столько лет не касался AS2, я думаю, что этот класс сейчас безвозвратно утерян ... Однако, если ваш пример бывает реальным примером - почему бы просто не использовать DOM? Мне кажется, что это не так уж много работы, если только у вас нет чрезмерной обработки XML в вашем проекте ...

0 голосов
/ 31 марта 2012

Только что понял, что я изменил ваш родительский тег на наборы.

var myXML:XML = new XML(
<sets name="thumbsBooks">
     <set name="pdf">
         <thumb>Data I want to access</thumb>
         <thumb>Data I want to access</thumb>
     </set>
     <set name="printed">
         <thumb>Data I don't want to access</thumb>
         <thumb>Data I don't want to access</thumb>
     </set>
 </sets>);



for each ( var mySet:XML in myXML.set ) {

      if( mySet.@name == "pdf" ) {
         // do your stuff
      }

}
...