PDA

Просмотр полной версии : Помогите пожалуйста правильно загрузить Xml данные в поля.


Azo
25.01.2009, 22:37
Сколько не пытаюсь, все ровно 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 минут
Так как делать мне особо нечего, сделал тебе пример:
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> ? (((
выложу исходник =) (http://ezidmusic.narod.ru/ezidslovar.rar)

Fatality
26.01.2009, 00:57
1. Замените ваш код на этот:
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
Вот рабочий исходник(будет работать только в версии CS3+), для проверки введи например "молоко", у этого раздела заполнены все поля.