ホームページ  >  記事  >  php教程  >  php XML 入門学習教材

php XML 入門学習教材

WBOY
WBOYオリジナル
2016-06-13 12:12:16803ブラウズ

原因:
今日、プロジェクトに取り組んでいるときに問題が発生しました。このサイトが完成しただけではなく、誰かが保守していることを示すために、ホームページ上の写真を動的に更新する必要があります。さて、要件は決まったので、それを実装するにはどうすればよいでしょうか? !
私の考えは次のとおりです:
画像の保存場所: フォルダーに保存します。 画像の種類: 画像であればアップロードして表示できます。名前は少し不規則なので、名前を変更する必要があります。 名前を付けます。
表示位置: 画像に対応する ID を指定する必要があります。この ID は固定であり、画像と 1 対 1 で対応する必要があります。したがって、レコード間に 1 対 1 の対応関係を持つリレーションシップ ファイルがあり、CSV ファイル、データベース レコードを選択できますが、最終的には XML を選択することにしました。トラブル。今日は挑戦でした。午後を過ごして、ようやく何かを得ることができました。
学習ステップ:
明確な目標: 1. XML の構造を理解する; 2. XML ファイルを動的に作成する方法; 3. XML ファイルを読み取って変更する方法
1. XML の構造はツリー状 構造:
これはわかりやすいですね。

コードをコピー コードは次のとおりです。




1
写真 1

2 id>
<名前>写真

/id> 3



2. 作成に使用する PHP:
1. DOM オブジェクトを定義します: $dom = new DomDocument('1.0');
2. 子要素を追加します: $dom - >appendChild($dom->createElement("pictures"))
メモリ内のプロトタイプは次のとおりです:
内部に子要素を追加し続けます。 appendChild( $dom->createElement("picture"));
子要素を追加する代わりに **->appendChild($dom->createElement("id"));
を追加します。 、ノードを追加します。 : ***->appendChild($dom->createNode("1"))
上記の * は、次のように 1 行で記述できます。 > $dom->appendChild($dom->createElement("pictures"))->appendChild($dom->createElement("picture"))
-->appendChild($dom-> ;createElement("id") )->appendChild($dom->createNode("1"));
メモリは次のようになります:1< ;/id>
明らかに、要件は遠く離れているため、混乱しやすいです。
したがって、通常は次のように記述されます: $pictures = $dom->appendChild($dom->createElement("pictures"));
$picture = $pictures->appendChild($dom- >createElement ("picture"));
$id = $picture->appendChild($dom->createElement("id"));
$id->appendChild($dom->) ;createNode( "1"));
以下の名前ノードを作成することもできます:
$name = $picture->appendChild($dom->createElement("name")); ;appendChild($dom->createNode("pic 1"));
次に、画像ノードを作成する必要があります:
$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/ category/25853 .htm

しかし、私が気に入っているメソッドがあります: simplexml_load_file("erhsh.xml");
このメソッドは、" を使用して、xml ファイルの内容をオブジェクトの形式に変換できます。 ->" "[]" は xml の内容を簡単に削除できます;
しかし、開発中にまだいくつかの問題が発生しました:
print_r($xml->pictures); を実行すると、出力は SimpleXMLElement です。 object, ( [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の値を変更することも可能です。
この文章はひどいものですが、覚えておいてください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。