スポンサーリンク

XMLを配列にしたり、配列をXMLに変換したりするのに、pear XML_Serizlierが便利。

XMLの属性値をXML_Unserializerで扱う方法について試してみた。

<?php
include ('XML/Unserializer.php');

$xml = <<<XML
    <rsp stat="ok">
	<video id="1234">foo</video>
	<name>hoge</name>
    </rsp>
XML;

$unserializer = &new XML_Unserializer();
$unserializer->unserialize($xml);
$data = $unserializer->getUnserializedData();

print_r ($data);
?>

XML_Unserializerは、デフォルトでは、属性値を扱ってくれない。

実行結果

Array
(
    [video] => foo
    [name] => hoge
)

<?php
include ('XML/Unserializer.php');

$xml = <<<XML
    <rsp stat="ok">
	<video id="1234">foo</video>
	<name>hoge</name>
    </rsp>
XML;

$options = array ('parseAttributes' => true);

$unserializer = &new XML_Unserializer($options);
$unserializer->unserialize($xml);
$data = $unserializer->getUnserializedData();

print_r ($data);
?>

属性値も、配列に含まれるようになった。

実行結果
Array
(
    [stat] => ok
    [video] => Array
	(
	    [id] => 1234
	    [_content] => foo
	)

    [name] => hoge
)

parseAttributesだけだと、属性値しかないときと、contentだけのときの区がつかないのと、また別の問題がある。

rspにnameという属性があって、さらにnameタグが含まれるときに、問題がおきる。

<?php
include ('XML/Unserializer.php');

$xml = <<<XML
    <rsp stat="ok" name="meta">
	<video id="1234">foo</video>
	<name>hoge</name>
    </rsp>
XML;

$options = array ('parseAttributes' => true, 'attributesArray' => '_attributes');
//$options = array ('parseAttributes' => true);

$unserializer = &new XML_Unserializer($options);
$unserializer->unserialize($xml);
$data = $unserializer->getUnserializedData();

print_r ($data);
?>

rspのnameがなくなってしまった。

Array
(
    [stat] => ok
    [name] => hoge
    [video] => Array
	(
	    [id] => 1234
	    [_content] => foo
	)

)

属性値を属性値の配列に入れるようにattributesArrayに入れてみる。

<?php
include ('XML/Unserializer.php');

$xml = <<<XML
    <rsp stat="ok" name="hoge">
	<video id="1234">foo</video>
	<name>hoge</name>
    </rsp>
XML;

$options = array ('parseAttributes' => true, 'attributesArray' => '_attributes');

$unserializer = &new XML_Unserializer($options);
$unserializer->unserialize($xml);
$data = $unserializer->getUnserializedData();

print_r ($data);
?>

属性値が _attributes という配列に入った。

実行結果
Array
(
    [_attributes] => Array
	(
	    [stat] => ok
	    [name] => meta
	)

    [video] => Array
	(
	    [_attributes] => Array
		(
		    [id] => 1234
		)

	    [_content] => foo
	)

    [name] => hoge
)



				
スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー