人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ActionScript3でサーバー上のXMLデータの更新をしたいのですが
どの様に行えばよいか分かりません。
※1.xml内の内容を変えるなどです。
もしくはできないのでしょうか?

やり方は、または良い方法をお教えいただけませんでしょうか?

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:XML サーバー データ 更新 XML
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● makiton
●27ポイント

私ならサーバ側にPHPなどで実装した更新用のスクリプトを置いて、それにActionScriptからデータを渡します。

手元に環境が無いので試していませんが、疑似コードです。

ActionScript

import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLVariables;
import flash.events.Event;

var request:URLRequest = new URLRequest('http://example.jp/write.php');
var data:URLVariables = new URLVariables();
data.hoge = '更新したいデータ';
data.fuga = 'データその2';
request.data = data;

var ua:URLLoader = new URLLoader(request);
ua.addEventListener(Event.COMPLETE, completeListener);
ua.load();

function completeListener(event:Event){
};

write.php


$nodes = simplexml_load_file('hoge.xml');
var_dump($nodes); //この内容によって、以下は書き変えてください

$nodes[0]->hoge = $_GET['hoge'];
$nodes[0]->fuga = $_GET['fuga'];

file_put_content('hoge.xml', $nodes->asXML);

<?xml version="1.0" encoding="UTF-8"?>
<rootnode>
 <node>
 <hoge>更新したいデータ</hoge>
 <fuga>データその2</fuga>
 </node>
 <node>
 <hoge></hoge>
 <fuga></fuga>
 </node>
</rootnode>

PHPのXML書き込み部分が非常にアヤシイですが、参考になれば幸いです。

flash.net.URLLoader (ActionScript 3.0)

【PHPウォッチ】第3回 PHP5でXMLサポートが大幅強化:ITpro

PHP: simplexml_load_file - Manual

◎質問者からの返答

ありがとうございます。

私のPHP送信のイメージはPHPの画面に遷移してしまうものかと思ってました!

ただ、サーバー側が処理もしてくれません。

ローカル環境で、SWFを実行しているためでしょうか?


2 ● pahoo
●27ポイント

#1さんの回答に補足です。

  1. ActionScript側からは、更新したXMLオブジェクト全体をPHPにPOST渡しした方が良いでしょう。
  2. PHP側の受け取りはDOM XMLで、domxml_open_fileを利用します。(#1さんの回答のようにSimpleXML関数でも良いのですが、DOMでないと保存が面倒になるため)
  3. PHPでのXMLファイルへの書き出しはDOM::saveXMLメソッドを使いましょう。

参考サイト


3 ● makiton
●26ポイント

>ただ、サーバー側が処理もしてくれません。

本当に処理をしていないのかどうか、問題の切り分けはされましたでしょうか。

例えば上記で示した例では、

http://example.jp/write.php?hoge=testhoge&fuga=testfuga

などとしてブラウザから直接アクセスして成功するようなら、ActionScriptに問題があることが分かります。

また開発中はPHPの設定などで、error_reporting = E_ALL, display_errors = Onにすると良いです。

スクリプト中でも設定できます。

error_reporting(E_ALL);
ini_set('display_errors', 'On');

まずはPHP側、ActionScript側どちらに問題があるかを確認すると良いと思います。

error_reporting

エラー処理およびログ記録関数

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ