2012-05-21 5 views
1

Мне нужно получить номер узла, но у меня есть только LOG_ID. Как найти этот номер?Найти номер записи XML

<LOG> 
<ENTRY LOG_ID="01042012"/> 
<ENTRY LOG_ID="03052012"/> 
<ENTRY LOG_ID="09052012"/> 
</LOG> 

Спасибо. Ули

обработка

ответ

1

использования E4X, как описано here и getting started documentation:

var myXML:XML = 
<LOG> 
    <ENTRY LOG_ID="01042012"/> 
    <ENTRY LOG_ID="03052012"/> 
    <ENTRY LOG_ID="09052012"/> 
</LOG> 

trace(myXML.ENTRY.(@LOG_ID==09052012).childIndex()); /* retrieve entire node */ 

Вы можете также сохранить ссылку на этот узел в качестве XML объекта:

var index:int = myXML.ENTRY.(@LOG_ID==09052012).childIndex(); 

Примечание: В childindex функцию (и некоторые другие) работают на отдельных узлах. Однако, если ваш пример ввода содержит несколько узлов с тем же значением атрибута, которое вы используете для извлечения, вы получите список узлов (т. Е. XMLList) вместо одного узла. Теперь для того, чтобы выяснить показатели таких детей вам нужно будет сделать следующее:

for each (var selectedNode in myXML.ENTRY.(@LOG_ID==09052012)) 
    trace(selectedNode.childIndex()); 

Вы всегда можете проверить, если ваш запрос E4X возвратил список с помощью следующей:

var candidates:XMLList = myXML.ENTRY.(@LOG_ID==09052012) as XMLList; 
if (candidates != null) { // a list 
     // do something ... 
} 
+0

Если я запустить код ** trace ** пуст. Думаю, номер должен подняться? – Uli

+0

@Uli: Я поставил 'entry' вместо' ENTRY'. Можете ли вы попробовать с моим обновленным ответом? Убедитесь, что все, что вы положили в E4X после имени переменной myXML, совпадает с фактической записью/записями в вашем XML-файле. Также обратите внимание, что E4X обычно пропускает корневой узел (т. Е. 'LOG' в вашем случае). – dirkgently

+0

Все еще не работает. (трассировка пуста) – Uli

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