PHPによる SimpleXML を利用したXMLの追加

AICA研究室 國分 元樹
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");
結果
PHPでXMLに要素を追加

test_file.xmlに要素が一つ追加されました。
このソースのポイントは主に3つです。

要素(NodeまたはElement)の追加は「addChild」メソッドを使用します。
addChildメソッドの第一引数は「ノード名」で、
第二引数は「値」です。第二引数はオーバーロードで使用しないことも出来ます。
属性(Attribute)の記述は「 [ ] 」を使用する。
属性は連想配列的に記述する事が可能です。
asXmlで上書きする。
asXmlの引数に相対パスを入力することで、上書き保存することが出来ます。
ちなみにPHPの実行結果として表示するには、saveXMLメソッドを使用することで表示できます。
ただし、header("Content-type: application/xml;");を記述するのを忘れないように!
著者プロフィール

國分 元樹

所属学科 : SE専攻科 3年

研究室では主にPHPやASP.NETなどのサーバーサイドを任されることが多いです。
一応AICA研究室の室長を勤めています。