トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     XMLデータファイルの読込みと表示について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
beewee
Åê¹ÆNo.45624
投稿日時: 2010-9-2 15:39
新米
居住地: 新宿区
投稿: 28
使用環境:
WinXP-SP3,FlashCS4(AS3.0)
XMLデータファイルの読込みと表示について
XMLデータ初心者です。

AS3.0でXMLデータファイルを読込みしてDataGridコンポーネントに表示させる様に奮闘努力中です。
しかしDataGridに読み込んだXMLデータを表示させたいのですがご教授願えませんでしょうか。

1.用意したXMLファイル(test.xml)
   <?xml version="1.0" encoding="utf-8"?>
   <song>
    <title>What you know?</title>
    <artist>Steve and the flubberblubs</artist>
    <year>1989</year>
   <lastplayed>2006-10-17-08:31</lastplayed>
   </song>

2.AS3.0
   import fl.controls.dataGridClasses.DataGridColumn;
   import fl.data.DataProvider;
   import flash.events.Event;
   import flash.net.URLLoader;
   import flash.net.URLRequest;

   var externalXML:XML;
   var loader:URLLoader = new URLLoader();
   var request:URLRequest = new URLRequest("test.xml");
   loader.load(request);
   loader.addEventListener(Event.COMPLETE, onComplete);
   
  function onComplete(event:Event):void
  {
  var loader:URLLoader = event.target as URLLoader;
  if (loader != null)
  {
  externalXML = new XML(loader.data);
  trace(externalXML.toXMLString());
  }
  else
  {
  trace("loader is not a URLLoader!");
  }
  }
  プレビューでは
   <song>
    <title>What you know?</title>
    <artist>Steve and the flubberblubs</artist>
    <year>1989</year>
   <lastplayed>2006-10-17-08:31</lastplayed>
   </song>
  XMLを読み込んで出力されました。

3.DataGridをコンポーネントからステージにドラッグしてインスタンス「aGg」としました。
  DataGridのカラムヘッダー設定を以下にした。
  var titleCol:DataGridColumn = new DataGridColumn("title");
  titleCol.headerText = "タイトル";
  titleCol.width = 100;
  var artistCol:DataGridColumn = new DataGridColumn("artist");
  artistCol.headerText = "プレイヤー";
  artistCol.width = 60;
  var yearCol:DataGridColumn = new DataGridColumn("year");
  yearCol.headerText = "発売日";
  yearCol.width = 60;
  var lastCol:DataGridColumn = new DataGridColumn("last");
  lastCol.headerText = "最終発表";
  lastCol.width = 60;
  var myDP:DataProvider = new DataProvider(dataXML);
  aDg.columns = [titleCol, artistCol, yearCal, lastCal ]; 
  aDg.width = 280;
  aDg.dataProvider = myDP;
  aDg.rowCount = aDg.length;

結果として//未定義のプロパティ「yearCal」「lastCal」のアクセスでエラーとなります。
XMLデータを表示させるにはどの様にAS記述したら良いのかわかりません。
例題を検索しても「XML読込み方法」、「ASに直接XML記述する方法」等が
ありますが連携した「XML読込み→データ変換?→表示」の記述が
なかなかございません。
どうぞ、宜しくご教授の程、お願い申し上げます。
ひろゆき
Åê¹ÆNo.45625
投稿日時: 2010-9-2 16:00
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: XMLデータファイルの読込みと表示について
スクリプトは[code][/code]で囲んで、ちゃんと整形しましょう。読みづらいです。

var titleCol:DataGridColumn = new DataGridColumn("title");
titleCol.headerText = "タイトル";
titleCol.width = 100;
var artistCol:DataGridColumn = new DataGridColumn("artist");
artistCol.headerText = "プレイヤー";
artistCol.width = 60;
var yearCol:DataGridColumn = new DataGridColumn("year");
yearCol.headerText = "発売日";
yearCol.width = 60;
var lastCol:DataGridColumn = new DataGridColumn("last");
lastCol.headerText = "最終発表";
lastCol.width = 60;
var myDP:DataProvider = new DataProvider(dataXML);
aDg.columns = [titleCol, artistCol, yearCol, lastCol ]; 
aDg.width = 280;
aDg.dataProvider = myDP;
aDg.rowCount = aDg.length;


----------------
質問する際は、回答者に具体的な情報を与えてください。

beewee
Åê¹ÆNo.45819
投稿日時: 2010-9-16 10:11
新米
居住地: 新宿区
投稿: 28
使用環境:
WinXP-SP3,FlashCS4(AS3.0)
Re: XMLデータファイルの読込みと表示について
ひろゆき様、報告が遅れました。
xmlファイルの整理とAS3.0の勉強に時間がかかりましたが、無事読込みと表示が出来ました。
アドバイスありがとうございました。

1.UIコンポーネントからDataGridをステージドラッグ。
2.xmlファイルは既存MySQLからphpMyAdmin,export作成しMEN1.xmlとした。

<?xml version="1.0" encoding="utf-8" ?>
<!--
-
- phpMyAdmin XML Dump
- version 2.11.2.2
- http://www.phpmyadmin.net
-
- ホスト: xxxxx
- 生成時間: 2010 年 9 月 07 日 04:37
- サーバのバージョン: 5.0.51
- PHP のバージョン: 4.4.2
-->

<!--
- データベース: '_mcnmogdb'
-->
<_mogdb>
<!-- テーブル MCNMEN1 -->
   <MEN1>
      <No.>001</No.>
      <name>鈴木</name>
      <email>001@def.ghi</email>
      <mobile>010-1111-2222</mobile>
   </MEN1>
   <MEN1>
      <No.>002</No.>
      <name>田中</name>
      <email>002@ert.fgh</email>
      <mobile>020-2222-3333</mobile>
   </MEN1>
   <MEN1>
       <No.>003</No.>
      <name>工藤</name>
      <email>003@3333.eee</email>
      <mobile>030-4444-5555</mobile>
   </MEN1>
</_mogdb>

2.アクションフレームに
import fl.controls.DataGrid;
import fl.data.DataProvider;
import fl.controls.ScrollPolicy;
import fl.controls.dataGridClasses.DataGridColumn;

var dp:DataProvider;
var url:String = "MEN1.xml";
var req:URLRequest = new URLRequest(url);
var uLdr:URLLoader = new URLLoader();
uLdr.addEventListener(Event.COMPLETE, completeHandler);
uLdr.load(req);

function completeHandler(event:Event):void {
var ldr:URLLoader = event.currentTarget as URLLoader;
var xmlDP:XML = new XML(ldr.data);
dp = new DataProvider(xmlDP);
aDg.dataProvider = dp;
}

aDg.addColumn("No.").width=35;
aDg.addColumn("name").width=90;
aDg.addColumn("mobile").width=100;
aDg.addColumn("email").width=200;
aDg.width =440;
aDg.height=500;
var tf:TextFormat = new TextFormat();
tf.size = 12;
tf.color = 0x0066CC;
tf.font = "Arial"
aDg.setStyle("headerTextFormat", tf);
aDg.move(20, 10);

以上でxmlfailをDataGridに表示出来ました。
また、phpMyAdminからxmlにexportしたデータはMs-OFFICE EXCELにて編集が可能でした。
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops