Моя цель - загрузить XML для хранения в Ext JS, а затем отобразить данные в сетке.
Я подготовил PHP, который генерирует данные XML
<?php
/** create-xml.php */
$books = [
[
"isbn" => "9780071799355",
"title" => "Oracle Database 12c SQL",
"author" => "Jason Price"
],
[
"isbn" => "0672328666",
"title" => "Sams Teach Yourself Oracle PL/SQL in 10 Minutes",
"author" => "Ben Forta"
]
];
$dom = new DomDocument('1.0', 'UTF-8');
$root = $dom->createElement("books");
$dom->appendChild($root);
foreach ($books as $b) {
$book = $dom->createElement("book");
$isbn = $dom->createElement("isbn", $b["isbn"]);
$book->appendChild($isbn);
$title = $dom->createElement("title", $b["title"]);
$book->appendChild($title);
$author = $dom->createElement("author", $b["author"]);
$book->appendChild($author);
$root->appendChild($book);
}
//$dom->formatOutput = true;
echo $dom->saveXML();
Очевидно, я проверил файл create-xml.php, генерирующий XML на локальном хосте
<?xml version="1.0" encoding="UTF-8"?>
<books><book><isbn>9780071799355</isbn><title>Oracle Database 12c SQL</title><author>Jason Price</author></book><book><isbn>0672328666</isbn><title>Sams Teach Yourself Oracle PL/SQL in 10 Minutes</title><author>Ben Forta</author></book></books>
Iпопробуйте загрузить его в JS Script, который использует ext-all-dev.js.
var xmlbookStore = Ext.create("Ext.data.Store", {
fields: ["isbn", "author", "title"],
autoLoad: true,
proxy: {
type: "ajax",
url: "create-xml.php",
//url: "books.xml",
reader: {
type: 'xml',
record: 'book',
rootProperty: 'books',
idPath: 'isbn'
}
}
});
console.log(xmlbookStore);
Ext.onReady(function () {
var grid = Ext.create("Ext.grid.Panel", {
store: xmlbookStore,
title: "Books",
columns: [
{
text: "ISBN",
dataIndex: "isbn"
},
{
text: "Author",
dataIndex: "author"
},
{
text: "Title",
dataIndex: "title"
}
],
renderTo: Ext.getBody()
});
});
Что я нахожу странным, точно такой же код работает, когда я переключаю источник данных на обычный XML-файл 'books.xml '(генерируется из тех же данных и сохраняется на диск).