Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   XML, существует ли узел (http://www.flasher.ru/forum/showthread.php?t=124752)

Division 07.05.2009 18:21

XML, существует ли узел
 
Как проверить, существует ли заданный узел в XML?
К примеру, есть XML
Код:

<?xml version="1.0" encoding="utf-8" ?>
<data>
<error>
  <title>Ошибка пользователя</title>
  <msg>Возможные причины: Кривые руки</msg>
</error>
</data>

Так вот, как узнать, существует ли узел error в таком XML(сейчас, понятное дело, существует, но его может и не быть)?

И ещё вопрос, как в xml узнать имя корневого узла?(в нашей ситуации это data)
В поиске был, мука читал, не нашёл.

BlooDHounD 07.05.2009 18:36

а как узнать имя не корневого узла?

etc 07.05.2009 18:38

1. xml.error.length() > 0.

Vas717 07.05.2009 18:45

Код AS3:

if ( xml.error[0] is XML ) { // code }
if ( xml.error is XMLList ) { // code }


wvxvw 07.05.2009 19:13

@Vas717:
Второй вариант не катит, селектор всегда лист возвращает, но может вернуть и пустой лист, поетому надо длину проверить.
Код AS3:

var xml:XML =
<foo>
        <bar/>
</foo>;
 
trace(xml.error is XMLList); // true


Division 07.05.2009 20:30

Всем спасибо. Насчёт length() думал, но показалось что не солидно выглядит (:
Цитата:

а как узнать имя не корневого узла?
Если бы я знал. Попробую сегодня ещё почитать, но что-то XML мне тяжко даётся.

Vas717 07.05.2009 20:55

); и на старуху бывает "прорурха"

s8000_1 07.05.2009 21:07

BlooDHounD, а Вы случайно не знаете какого-нибудь способа узнать имя некорневого узла? (раз уж разговор пошел)

etc 07.05.2009 21:29

s8000_1, об этом случайно написали в документации.

Geba 07.05.2009 22:34

Division, s8000_1 чтобы получить имя корневого узла или дочернего, можно попробовать сделать так
Код AS3:

var doc:XML=
<data>
        <error>
                <title>Ошибка пользователя</title>
                <msg>Возможные причины: Кривые руки</msg>
        </error>
</data>;
var rootName:String=doc.name(); // rootName="data"
if(doc.children().length())
        var childName:String=doc.*[0].name(); // childName="error"



Часовой пояс GMT +4, время: 22:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.