原因:
今日、プロジェクトに取り組んでいるときに問題が発生しました。このサイトが単に完成しただけではなく、誰かが保守していることを示すために、ホームページ上の写真を動的に更新する必要があります。さて、要件は決まったので、それを実装するにはどうすればよいでしょうか? !
私の考えは次のとおりです:
画像の保存場所:フォルダに入れてください; 画像の種類:画像であればアップロードして表示できます; 画像の名前:元の名前は少しあります。不規則なので名前を変更する必要があります。
表示位置: 画像に対応する ID を指定する必要があります。この ID は固定であり、画像と 1 対 1 に対応する必要があります。したがって、レコード間に 1 対 1 の対応関係を持つリレーションシップ ファイルがあり、CSV ファイル、データベース レコードを選択できますが、最終的には XML を選択することにしました。トラブル。今日は挑戦でした。午後を過ごして、ようやく何かを得ることができました。
学習ステップ:
明確な目標: 1. xml の構造を理解する; 2. xml ファイルを動的に作成する方法; 3. xml ファイルを読み取り、変更する方法
1. xml の構造はツリー構造です:
これは簡単です理解すること。単純に 1 つ書きます:
コードをコピーします コードは次のとおりです:
1< /id>
したがって、一般的には次のように書かれます: $pictures = $dom->appendChild($dom->createElement("pictures"));
$picture = $pictures->appendChild($dom->createElement( "picture" ));
$id = $picture->appendChild($dom->createElement("id")); 名前ノードを作成することもできます:
$name = $picture->appendChild($) dom->createElement("name"));
));
次に、画像ノードを作成する必要があります:
$picture = $pictures->appendChild($dom->createElement("picture")) ;
実は、こうした面倒なことは for ループを書くことで実現できます。
XML ファイルを生成します:
$dom->formatOutput = true;//フォーマットされた出力を設定します
$dom->save("erhsh.xml");//XML ファイルを保存します
3、XML ファイルを読み取ります。
1. さらに DOM オブジェクトを定義します; $dom->new DomDocument(); 2. XML ファイルをロードします: $dom->load("erhsh.xml"); 3. 以下に従ってノード コレクションを取得します。ノード名:$dom->getElementByTagName("pictures");
この方法はちょっと面倒です、参考ファイル:
http://www.jb51.net/article/25853.htm
でも、私が気に入っているメソッド: simplexml_load_file( "erhsh.xml");
このメソッドは、xml ファイルの内容をオブジェクトの形式に変換できます。「->」を使用すると、xml の内容を簡単に取得できます。 "[]";
しかし開発中にまだこの問題に遭遇しました ちょっとした質問:
print_r($xml->pictures); を実行すると、出力は SimpleXMLElement オブジェクト ([picture] => array([ 0]=>array(...)[1]= >array(...)));
再度実行します: print_r($xml->pictures->picture); 出力は n 個の個別のオブジェクトです。 。
実行: print_r($xml->pictures->picture[0]->id); 出力はオブジェクトのままです。これは非常に理解できないので、文字列である必要があります。 最後にネットでは「反復オブジェクト」だと言われていますが、
echo出力を使えばいいのですが、print_r()とvar_dump()の出力が不正確です。参考アドレス:http://www.jb51.net/article/25852.htm
もちろん、この方法でxmlの値を変更することも可能です。
この文章はひどいものですが、覚えておいてください。
以上、中学教育復習教材php xml入門学習教材の内容を含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。