Просмотр полной версии : Проблема с XML, как через массив выбрать нужный узел...
MINASTIS
24.02.2007, 16:00
Приветствую. Кстати всех мужчин с прошедшим праздником (и себя тоже :) ).
Я хотел как-то получить легко доступ к узлам xml документа через массив...
Вот код для загрузки xml:
var xmlobj:XML = new XML();
var all:Array = new Array();
xmlobj.load("news/all.dat");
xmlobj.onLoad = function (success:Boolean) {
if (success) {
all.push(xmlobj.childNodes);
trace(all[1].nodeValue);
}
}
Вот сам xml:
<part link="news/01032007.dat">01.03.2007</part>
<part link="news/01032007.dat">02.03.2007</part>
Если набрать просто trace(all); он выводит всю инфу xml документа...
Каким образом мне первой и второй строки (точнее первого и второго узла) получить параметры, и в общем, значения?
ignoreWhite для начала.
Смысла типизировать код AS1 нет.
MINASTIS
24.02.2007, 17:18
Не работает! он мне все равно undefined выводит trace-ом...
var xmlobj:XML = new XML();
var all:Array = new Array();
xmlobj.load("news/all.dat");
xmlobj.onLoad = function (success:Boolean) {
if (success) {
xmlobj.ignoreWhite;
all.push(xmlobj.childNodes);
trace(all[1].nodeValue);
}
}
И не будет. Потому что надо нажать F1, написать «ignoreWhite» и прочитать по этой теме.
http://livedocs.macromedia.com/flash/8/main/00002871.html
К тому же у массива нет свойства nodeValue.
edit:
В all[1] неоткуда взяться элементу со свойстом nodeValue. Да и в all[0] тоже.
У undefined нет свойства nodeValue, да.
MINASTIS
24.02.2007, 17:47
Подскажите, как мне тогда получить значения и вобще доступ к этим узлам, чтобы не писать несколько раз nextSibling...
Нет, лучше, каким образом мне каждый узел как элемент xml (в котором можно и nodeValue, и attributes смотреть), привязать к элементу массива? например у массива 1 - это первый узел, и с него можно параметры и инфу рать. Как мне все узлы так рассортровать?
Зачем распихивать что-то куда-то? Ты разберись сначала, чтобы твой XML корректно обработался и загрузился. Свойство childNodes и так массив, смысл запихивать его в другой мне непонятен.
А вообще, сидим и читаем:
http://www.artlebedev.ru/tools/technogrette/etc/flash-xml/
MINASTIS
24.02.2007, 18:38
Прошу еще раз объяснить... Ибо поступил я на гуманитарный факультет и мозг мой путем одурманивания все менее становился расположен к программированию. Теперь восполняю пробелы. Вот я попробовал сделать так... Он мне null выводит.
stop();
var xmlobj:XML = new XML();
var all:Array = new Array();
xmlobj.load("news/all.dat");
xmlobj.onLoad = function (success:Boolean) {
if (success) {
xmlobj.ignoreWhite = true;
trace(xmlobj.childNodes[0].nodeValue);
}
}
ignoreWhite = true; надо ставить ещё до загрузки, а не после.
Я тебе две ссылки дал, где написаны правильные примеры.
MINASTIS
24.02.2007, 19:35
__etc спасибо. Работает. Теперь вызываю атрибуты trace(xmlobj.childNodes[0].attributes.link а значение xmlobj.childNodes[0].firstChild.nodeValue
this.create
25.02.2007, 02:40
var xml_loader:XML = new XML();
var curNode:XMLNode;
xml_loader.ignoreWhite = true;
//
xml_loader.onLoad = function(success) {
if (success && !this.status) {
curNode = this.firstChild;
for (i=0; i<curNode.childNodes.length; i++) {
trace(curNode.childNodes[i].attributes.link);
trace(curNode.childNodes[i].firstChild)
}
}
};
//
xml_loader.load('test.xml');
xml переделал. Теперь он такой:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<part link="news/01032007.dat">01.03.2007</part>
<part link="news/01032007.dat">02.03.2007</part>
</main> Но можно сделать xml и по-другому, без еще одного вложения:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<part link="news/01032007.dat" data="01.03.2007"/>
<part link="news/01032007.dat" data="02.03.2007"/>
</main>
Тогда код будет такой:
var xml_loader:XML = new XML();
var curNode:XMLNode;
xml_loader.ignoreWhite = true;
//
xml_loader.onLoad = function(success) {
if (success && !this.status) {
curNode = this.firstChild;
for (i=0; i<curNode.childNodes.length; i++) {
trace(curNode.childNodes[i].attributes.link);
trace(curNode.childNodes[i].attributes.data);
}
}
};
//
xml_loader.load('test.xml');
this.create, а какой смысл типизировать подобный код?
Если человек пишет классами, типизация в крови =)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.