{"id":35,"date":"2010-01-09T14:19:30","date_gmt":"2010-01-09T05:19:30","guid":{"rendered":"http:\/\/phpdev.comsys-blog.com\/?p=35"},"modified":"2010-01-09T14:19:30","modified_gmt":"2010-01-09T05:19:30","slug":"array-%e3%81%ae%e5%86%85%e5%ae%b9%e3%81%8b%e3%82%89xml%e3%82%92%e7%94%9f%e6%88%90%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/tamura.jp\/?p=35","title":{"rendered":"PHP5 XML\u30d5\u30a1\u30a4\u30eb\u3068\u914d\u5217\u3092\u76f8\u4e92\u306b\u53d7\u3051\u6e21\u3057\u3092\u3059\u308b\u30af\u30e9\u30b9"},"content":{"rendered":"<p>&lt;?php<br \/>\n\/**<br \/>\n* \u30af\u30e9\u30b9\u306e\u8aac\u660e<br \/>\n*\u00a0\u00a0 XML\u30d5\u30a1\u30a4\u30eb\u3068\u914d\u5217\u3092\u76f8\u4e92\u306b\u53d7\u3051\u6e21\u3057\u3092\u3059\u308b\u30af\u30e9\u30b9<br \/>\n*<br \/>\n* @author k.t<br \/>\n* @since PHP 5.0<br \/>\n*\/<br \/>\nclass com_xml_array<br \/>\n{<br \/>\n\u00a0\/**<br \/>\n\u00a0 * Array\u306b\u5165\u3063\u3066\u3044\u308b\u5185\u5bb9\u3092\u3001XML\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u8fbc\u3080\u3002\u5024\u306f\u30ad\u30fc\u5024\u304c&#8217;text&#8217;\u306b\u683c\u7d0d\u3059\u308b\u3002<br \/>\n\u00a0 * @param string $file\u00a0 \u66f8\u304d\u8fbc\u3080\u30d5\u30a1\u30a4\u30eb\u540d<br \/>\n\u00a0 * @param Array\u00a0 $array \u5185\u5bb9\u304c\u5165\u3063\u305fArray<br \/>\n\u00a0 * @return string<br \/>\n\u00a0 *\/<br \/>\n\u00a0public static function save_array2xml($file,$array,$xml_root_name=&#8217;xml_root&#8217;)<br \/>\n\u00a0{<br \/>\n\u00a0\u00a0$dom = new DomDocument(&#8216;1.0&#8242;,&#8217;UTF-8&#8242;);<br \/>\n\u00a0\u00a0$dom-&gt;preserveWhiteSpace = false;<br \/>\n\u00a0\u00a0$dom-&gt;formatOutput = true;<\/p>\n<p>\u00a0\u00a0$parent = new domElement($xml_root_name);<br \/>\n\u00a0\u00a0$dom-&gt;appendChild($parent);<br \/>\n\u00a0\u00a0self::array2xml_recursive($array,$parent,$dom);<br \/>\n\u00a0\u00a0$dom-&gt;save($file);<br \/>\n\u00a0}<br \/>\n\u00a0\/**<br \/>\n\u00a0 * \u518d\u5e30\u7684\u306barray\u306e\u5185\u5bb9\u3092xml\u306b\u3059\u308b.<br \/>\n\u00a0 * @param Array\u00a0\u00a0 $array<br \/>\n\u00a0 * @param DOMNode $parentarray<br \/>\n\u00a0 * @return<br \/>\n\u00a0 *\/<br \/>\n\u00a0private static function array2xml_recursive($array,&amp;$parent,&amp;$dom)<br \/>\n\u00a0{<br \/>\n\u00a0\u00a0foreach($array as $key =&gt; $value)<br \/>\n\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0if(is_array($value))<br \/>\n\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0$node = $dom-&gt;createElement($key);<br \/>\n\u00a0\u00a0\u00a0\u00a0$parent-&gt;appendChild($node);<br \/>\n\u00a0\u00a0\u00a0\u00a0self::array2xml_recursive($value,$node,$dom);<br \/>\n\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0\u00a0else if(is_string($value))<br \/>\n\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0if($key==&#8217;text&#8217;)<br \/>\n\u00a0\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0$node = $dom-&gt;createTextNode($value);<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0$parent-&gt;appendChild($node);<br \/>\n\u00a0\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0\u00a0\u00a0else<br \/>\n\u00a0\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0$node = $dom-&gt;createElement($key,$value);<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0$parent-&gt;appendChild($node);<br \/>\n\u00a0\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0\u00a0else<br \/>\n\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0$node = $dom-&gt;createElement($key,$value);<br \/>\n\u00a0\u00a0\u00a0\u00a0$parent-&gt;appendChild($node);<br \/>\n\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0}<br \/>\n\u00a0}<\/p>\n<p>\u00a0\/**<br \/>\n\u00a0 * XML\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3001Array\u306b\u683c\u7d0d\u3059\u308b\u3002\u30ce\u30fc\u30c9\u4e2d\u306b\u5b50\u30ce\u30fc\u30c9\u3092\u4f5c\u308b\u5834\u5408\u3067\u3001\u305d\u306e\u30bf\u30b0\u306e\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u5834\u5408\u306f\u3001\u30ad\u30fc\u5024\u304c&#8217;text&#8217;\u306b\u5024\u3092\u683c\u7d0d\u3059\u308b\u3002<br \/>\n\u00a0 * @param string $file \u30d5\u30a1\u30a4\u30eb\u540d<br \/>\n\u00a0 * @return Array \u8aad\u307f\u8fbc\u3093\u3060\u7d50\u679c\u304c\u5165\u3063\u305f\u914d\u5217<br \/>\n\u00a0 *\/<br \/>\n\u00a0public static function load_xml2array($file)<br \/>\n\u00a0{<br \/>\n\u00a0\u00a0$dom = new DomDocument(&#8216;1.0&#8242;,&#8217;UTF-8&#8217;);<br \/>\n\u00a0\u00a0$dom-&gt;preserveWhiteSpace = false;<br \/>\n\u00a0\u00a0$dom-&gt;formatOutput = true;<br \/>\n\u00a0\u00a0try<br \/>\n\u00a0\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0$ret=$dom-&gt;load($file);<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0if(!$ret) return null;<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0}<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0catch(Exceptuin $ex)<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0throw new Exception($ex-&gt;getMessage());<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0}<br \/>\n\u00a0\u00a0$array = null;<br \/>\n\u00a0\u00a0$root = $dom-&gt;childNodes-&gt;item(0)-&gt;childNodes;<br \/>\n\u00a0\u00a0foreach($root as $node)<br \/>\n\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0$node_type = $node-&gt;nodeType;<br \/>\n\u00a0\u00a0\u00a0if($node_type==XML_TEXT_NODE)<br \/>\n\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0$array[&#8216;text&#8217;] = $node-&gt;nodeValue;<br \/>\n\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0\u00a0else<br \/>\n\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0self::xml2array_recursive($node,$array[$node-&gt;nodeName]);<br \/>\n\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0}<br \/>\n\u00a0\u00a0return $array;<br \/>\n\u00a0}<\/p>\n<p>\u00a0\/**<br \/>\n\u00a0 * \u518d\u5e30\u7684\u306bXML\u306e\u69cb\u9020\u3092Array\u306b\u683c\u7d0d\u3059\u308b.<br \/>\n\u00a0 * @param DOMNode $pnode<br \/>\n\u00a0 * @param Array\u00a0\u00a0 $array<br \/>\n\u00a0 *\/<br \/>\n\u00a0private static function xml2array_recursive($pnode,&amp;$array)<br \/>\n\u00a0{<br \/>\n\u00a0\u00a0if(!$pnode-&gt;hasChildNodes()) return;<br \/>\n\u00a0\u00a0$child_nodes = $pnode-&gt;childNodes;<br \/>\n\u00a0\u00a0if($child_nodes-&gt;length == 0) return;<br \/>\n\u00a0\u00a0foreach($child_nodes as $node)<br \/>\n\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0$node_type = $node-&gt;nodeType;<br \/>\n\u00a0\u00a0\u00a0if($node_type==XML_TEXT_NODE)<br \/>\n\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0$array[&#8216;text&#8217;] = $node-&gt;nodeValue;<br \/>\n\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0\u00a0else<br \/>\n\u00a0\u00a0\u00a0{<br \/>\n\u00a0\u00a0\u00a0\u00a0self::xml2array_recursive($node,$array[$node-&gt;nodeName]);<br \/>\n\u00a0\u00a0\u00a0}<br \/>\n\u00a0\u00a0}<br \/>\n\u00a0}<br \/>\n}<br \/>\n?&gt;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&lt;?php \/** * \u30af\u30e9\u30b9\u306e\u8aac\u660e *\u00a0\u00a0 XML\u30d5\u30a1\u30a4\u30eb\u3068\u914d\u5217\u3092\u76f8\u4e92\u306b\u53d7\u3051\u6e21\u3057\u3092\u3059\u308b\u30af\u30e9\u30b9 * * @author k.t * @since PHP 5.0 *\/ class com_xml_array { \u00a0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[53,64,77],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-php5-array-xml","tag-array","tag-php5","tag-xml"],"_links":{"self":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=35"}],"version-history":[{"count":0,"href":"https:\/\/tamura.jp\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions"}],"wp:attachment":[{"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamura.jp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}