PHPによる SimpleXML を利用したXMLの追加
AICA研究室 國分 元樹
2009年10月30日
2009年10月30日
今日は前回のXMLの読み込みに続いて、追加を行う方法を解析したいと思います。
ソース
結果
ソース
/// XML(ファイル名 test_file.xml)
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Fruit id="001">
<Name>リンゴ</Name>
<From>青森</From>
</Fruit>
<Fruit id="002">
<Name>バナナ</Name>
<From>沖縄</From>
</Fruit>
<Fruit id="003">
<Name>ブドウ</Name>
<From>山梨</From>
</Fruit>
<Fruit id="004">
<Name>イチゴ</Name>
<From>栃木</From>
</Fruit>
</root>
/// PHP
$xml=simplexml_load_file("test_file.xml");
$addNode = $xml->addChild("Fruit");
$addNode["id"] = "005";
$addNode->addChild("Name",mb_convert_encoding("メロン","UTF-8","Shift_JIS"));
$addNode->addChild("From",mb_convert_encoding("北海道","UTF-8","Shift_JIS"));
$xml->asXml("test_file.xml");
test_file.xmlに要素が一つ追加されました。
このソースのポイントは主に3つです。
- 要素(NodeまたはElement)の追加は「addChild」メソッドを使用します。
-
addChildメソッドの第一引数は「ノード名」で、
第二引数は「値」です。第二引数はオーバーロードで使用しないことも出来ます。 - 属性(Attribute)の記述は「 [ ] 」を使用する。
- 属性は連想配列的に記述する事が可能です。
- asXmlで上書きする。
-
asXmlの引数に相対パスを入力することで、上書き保存することが出来ます。
ちなみにPHPの実行結果として表示するには、saveXMLメソッドを使用することで表示できます。
ただし、header("Content-type: application/xml;");を記述するのを忘れないように!