alexmustdie
@alexmustdie

Почему DataProvider не хочет парсить XML?

Доброго времени суток

Из данного XML нужно спарсить только "users":
<response>
<table>
<name>Какая-то строка</name>
</table>
<links>
<xml>
Какая-то ссылка
</xml>
</links>
<users>
<user>
<id>1</id>
</user>
</users>
</response>


Чтобы воспроизвести мою ошибку:
1. Перетащите объект DataGrid на сцену
2. В код кадра впишите:

stop();

import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.*;

var myXML: XML;
var dp: DataProvider;
var dg: DataGrid;
var urlReq: URLRequest;
var myLoader: URLLoader;

myXML = XML("<response><table><name>Какая-то строка</name></table><links><xml>Какая-то ссылка</xml></links><users><user><id>1</id></user></users></response>");

var ids: DataGridColumn = new DataGridColumn("id");
ids.headerText = "id";
ids.width = 100;

dp = new DataProvider(myXML.users);

dg = new DataGrid();
addChild(dg);

dg.x = 0;
dg.y = 0;
dg.width = 550;
dg.height = 454;
dg.headerHeight = 40;
dg.rowHeight = 30;
dg.columns = [ids];
dg.dataProvider = dp;
dg.rowCount = dp.length;

dg.setSize(550, 400);


У меня при компиляции возникает такая ошибка:
LuQMwcP.png

Причём, если XML выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<table>
<name>Какая-то строка</name>
</table>
<links>
<xml>
Какая-то ссылка
</xml>
</links>
<user>
<id>1</id>
</user>
</response>

а dp = new DataProvider(myXML), то ошибок нет и результат выглядит так:
hX1NV8S.png
Появилось 2 лишних ряда ("table" и "links")

Что с этим делать?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
copal
@copal
𝄞 ...оооо baby
У Вас в коде много расхождений, сначала одни значения потом другие, по этому я делал все наугад и если что не так вините себя. И так же я комментировать код не буду, если что не понятно то смотрите в хелпе.

stop();

import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.*;

var myXML: XML;
var dp: DataProvider;
var dg: DataGrid;
var urlReq: URLRequest;
var myLoader: URLLoader;

myXML = <response>
			<table>
				<name>2</name>
			</table>
			<links>
				<xml>6</xml>
			</links>
			<users>
				<user><id>1</id></user>
				<user><id>3</id></user>
			</users>
		</response>;
		
var xml:XML = XML(myXML.users);
trace(xml)

var ids: DataGridColumn = new DataGridColumn("id");
ids.headerText = "id";
ids.width = 100;

dp = new DataProvider(xml);

dg = new DataGrid();
addChild(dg);

dg.x = 0;
dg.y = 0;
dg.width = 550;
dg.height = 454;
dg.headerHeight = 40;
dg.rowHeight = 30;
dg.columns = [ids];
dg.dataProvider = dp;
dg.rowCount = dp.length;

dg.setSize(550, 400);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы