Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Помогите пожалуйста правильно загрузить Xml данные в поля. (http://www.flasher.ru/forum/showthread.php?t=120605)

Azo 25.01.2009 22:37

Помогите пожалуйста правильно загрузить Xml данные в поля.
 
Сколько не пытаюсь, все ровно xml плохо понимаю...
Прошу помощи.

есть XML
Код:

<?xml version="1.0"?>
<root>
            <slovo>
                <inx>Продукты завтрака</inx>
                <kur>nan [нан]</kur>
                <rus>хлеб</rus>
                <eng>bread</eng>
                <ger>Brot</ger>
                <fre>pain</fre>
        </slovo>
        <slovo>
                <inx>Продукты завтрака</inx>
                <kur>shir [шир]</kur>
                <rus>молоко</rus>
                <eng>milk</eng>
                <ger>Milch</ger>
                <fre>lait</fre>
        </slovo>
        <slovo>
                <inx>Продукты завтрака</inx>
                <kur>tomast [томаст]</kur>
                <rus>сметана</rus>
                <eng>sour cream</eng>
                <ger>saure Sahne</ger>
                <fre>creme fraiche</fre>
        </slovo>
          <slovo>
                <inx>Овощи</inx>
                <kur>kelem[кaлaм]</kur>
                <rus>капуста</rus>
                <eng>cabbage;</eng>
                <ger>Kohl</ger>
                <fre>chou</fre>
        </slovo>
        <slovo>
                <inx>Овощи</inx>
                <kur>keleme broccoli [кaлaмэ броколи]</kur>
                <rus>брокколи</rus>
                <eng>broccoli</eng>
                <ger/>
                <fre/>
        </slovo>
          <slovo>
                <inx>Фрукты</inx>
                <kur>tiri [тыри]</kur>
                <rus>виноград</rus>
                <eng>grapes</eng>
                <ger>Wein</ger>
                <fre>vigne</fre>
        </slovo>
        <slovo>
                <inx>Фрукты</inx>
                <kur>sev [сев]</kur>
                <rus>яблока</rus>
                <eng>apple</eng>
                <ger>Apfel</ger>
                <fre>pomme</fre>
        </slovo>
        <slovo>
                <inx>Фрукты</inx>
                <kur>hurme [хърме]</kur>
                <rus>груша</rus>
                <eng>pear</eng>
                <ger>Birne</ger>
                <fre>poirier</fre>
        </slovo>
</root>

где
<inx></inx> Раздел, к которому относится слово
<kur></kur> слово на языке kur
<rus></rus> слово на языке rus
<eng></eng> слово на языке eng
<ger></ger> слово на языке ger
<fre></fre> слово на языке fre

Во флеше есть 1 Label InputText и 4 Label DinamicText
Надо чтобы вводя в InputText слово на Русском (например "груша")
оставшиеся 4 Динамические поля заполнялись теми данными которые между

<inx></inx>
<kur></kur>
<eng></eng>
<ger></ger>
<fre></fre>

Помогите пожалуйста! :rolleyes:

Fatality 25.01.2009 23:30

Ну, тут тебе поможет indexOf(). Циклом проверям все дочерние элементы <rus> на соответствие с текстом в поле и если indexOf() возвращает значение отличное от -1, выводим остальные элементы текущего родителя.

Добавлено через 37 минут
Так как делать мне особо нечего, сделал тебе пример:
Код AS1/AS2:

var x:XML = new XML();
x.ignoreWhite = true;
x.load("index.xml");
x.onLoad = function()
{
        var arr:Array = x.firstChild.childNodes;
        for(i = 0; i < arr.length; i++)
        {
                if(arr[i].childNodes[2].firstChild.nodeValue.indexOf(texter.text) != -1)
                {
                        inx.htmlText = "<b>"+arr[i].childNodes[0].firstChild.nodeValue+"</b>";
                        kur.text = arr[i].childNodes[1].firstChild.nodeValue;
                        eng.text = arr[i].childNodes[3].firstChild.nodeValue;
                        ger.text = arr[i].childNodes[4].firstChild.nodeValue;
                        fre.text = arr[i].childNodes[5].firstChild.nodeValue;
                }
        }
}

создай textet.txt - поле ввода, четыре поля с именами соответсвующие языкам и поле inx для названия раздела.

P.S кнопку и обработчик сделай уже сам.

Azo 26.01.2009 00:20

СпасибО! Сейчас посмотрю...
Весьма признателен)

Добавлено через 19 минут
Не разобрался, а для чего там <b> ? (((
выложу исходник =)

Fatality 26.01.2009 00:57

1. Замените ваш код на этот:
Код AS1/AS2:

kn1._visible = false;
var x:XML = new XML();
x.ignoreWhite = true;
x.load("baza.xml");
x.onLoad = function()
{
        kn1._visible = true;
};
kn1.onRelease = function()
{
        var arr:Array = x.firstChild.childNodes;
        for (i=0; i<arr.length; i++)
        {
                var n:String = arr[i].childNodes[2].firstChild.nodeValue;
                if (n.indexOf(input.text) == 0 and n.length == input.length)
                {
                        inx.text = arr[i].childNodes[0].firstChild.nodeValue;
                        kur.text = arr[i].childNodes[1].firstChild.nodeValue;
                        eng.text = arr[i].childNodes[3].firstChild.nodeValue;
                        ger.text = arr[i].childNodes[4].firstChild.nodeValue;
                        fre.text = arr[i].childNodes[5].firstChild.nodeValue;
                        flag = true;
                }
        }
        if (!flag)inx.text = "Ничего не найдено";
        flag = false;
};

2. Переведите XML в нормальную кодировку(utf8)
3. Добавьте поле fre для французского языка.
4. добавьте текст в поля <rus>, его там нет !

при соблюдении вышеописанных условий, все работает я проверял.

Добавлено через 6 минут
Я бы прислал вам рабочие исходники... но у меня CS4, могу разве что сохранить в режиме совсестимости с CS3. Если подходит то могу выложить.

Azo 26.01.2009 01:09

спасибо уважаемый Фаталити! Буду признателен.

Добавлено через 8 минут
Все работает! Спасибо! исходник не нужен)

Fatality 26.01.2009 01:28

Вложений: 1
Вот рабочий исходник(будет работать только в версии CS3+), для проверки введи например "молоко", у этого раздела заполнены все поля.


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

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