XMLデータが複数の同名のタグの場合の処理を行う
説明
データベースやエクセルなどで生成されたXMLデータは同じ名前のタグが複数使用されています。このような場合はExt.data.XmlReader()のmappingプロパティで「タグ名:nth(順番)/タグ名」のように/で区切って指定していきます。この時、nameプロパティには異なる名前を指定しておく必要があります。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="resource/css/ext-all.css" type="text/css" media="all">
<link rel="stylesheet" href="resource/css/main.css" type="text/css" media="all">
<script type="text/javascript" src="js/ext-base.js"></script>
<script type="text/javascript" src="js/ext-all.js"></script>
<script type="text/javascript"><!--
Ext.EventManager.on(window, "load", function(){
var store = new Ext.data.Store({
url: 'booklist.xml',
reader: new Ext.data.XmlReader({
record: 'book'
}, [
{ name:'name', mapping : 'data:nth(1)/content' },
{ name:'price', mapping : 'data:nth(2)/content' },
{ name:'info', mapping : 'data:nth(3)/content' }
]
)
});
var grid = new Ext.grid.GridPanel({
store: store,
columns: [
{ header: "書籍名", width: 120, dataIndex: 'name' },
{ header: "価格", width: 50, dataIndex: 'price' },
{ header: "説明", width: 230, dataIndex: 'info' }
],
width:420,
height:140
});
store.load();
grid.render("dataArea");
});
// --></script>
</head>
<body>
<h1>XMLデータを表示する(複数の同名のタグで囲まれている場合)</h1>
<div id="dataArea"></div>
</body>
</html>
【XML : booklist.xml】
<?xml version="1.0" encoding="UTF-8" ?>
<list>
<book>
<data>
<content>Ajax本</content>
</data>
<data>
<content>2980</content>
</data>
<data>
<content>Ajaxの解説本です。初級〜中級者向けです。</content>
</data>
</book>
<book>
<data>
<content>JavaScript本</content>
</data>
<data>
<content>1780</content>
</data>
<data>
<content>JavaScriptの解説本です。上級者向けです。</content>
</data>
</book>
<book>
<data>
<content>Google Map本</content>
</data>
<data>
<content>2780</content>
</data>
<data>
<content>Google Map APIの解説本です。</content>
</data>
</book>
</list>