时间:2021-07-01 10:21:17 帮助过:28人阅读
- <br>class ArrayToXML <br>{ <br>/** <br>* The main function for converting to an XML document. <br>* Pass in a multi dimensional array and this recrusively loops through and builds up an XML document. <br>* <br>* @param array $data <br>* @param string $rootNodeName - what you want the root node to be - defaultsto data. <br>* @param SimpleXMLElement $xml - should only be used recursively <br>* @return string XML <br>*/ <br>public static function toXml($data, $rootNodeName = 'data', $xml=null) <br>{ <br>// turn off compatibility mode as simple xml throws a wobbly if you don't. <br>if (ini_get('zend.ze1_compatibility_mode') == 1) <br>{ <br>ini_set ('zend.ze1_compatibility_mode', 0); <br>} <br>if ($xml == null) <br>{ <br>$xml = simplexml_load_string("<!--?xml version='1.0' encoding='utf-8'?--><$rootNodeName />"); <br>} <br>// loop through the data passed in. <br>foreach($data as $key => $value) <br>{ <br>// no numeric keys in our xml please! <br>if (is_numeric($key)) <br>{ <br>// make string key... <br>$key = "unknownNode_". (string) $key; <br>} <br>// replace anything not alpha numeric <br>$key = preg_replace('/[^a-z]/i', '', $key); <br>// if there is another array found recrusively call this function <br>if (is_array($value)) <br>{ <br>$node = $xml->addChild($key); <br>// recrusive call. <br>ArrayToXML::toXml($value, $rootNodeName, $node); <br>} <br>else <br>{ <br>// add single node. <br>$value = htmlentities($value); <br>$xml->addChild($key,$value); <br>} <br>} <br>// pass back as string. or simple xml object if you want! <br>return $xml->asXML(); <br>} <br>} <br> <br><strong>下面是我编辑过的代码</strong> <br><span style="CURSOR: pointer" onclick="doCopy('code89899')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>function arrtoxml($arr,$dom=0,$item=0){ <br>if (!$dom){ <br>$dom = new DOMDocument("1.0"); <br>} <br>if(!$item){ <br>$item = $dom->createElement("root"); <br>$dom->appendChild($item); <br>} <br>foreach ($arr as $key=>$val){ <br>$itemx = $dom->createElement(is_string($key)?$key:"item"); <br>$item->appendChild($itemx); <br>if (!is_array($val)){ <br>$text = $dom->createTextNode($val); <br>$itemx->appendChild($text); <br>}else { <br>arrtoxml($val,$dom,$itemx); <br>} <br>} <br>return $dom->saveXML(); <br>} <br><br><strong>数组转换成XML格式</strong> <br><span style="CURSOR: pointer" onclick="doCopy('code67873')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--? <BR-->$elementLevel = 0 ; <br>function array_Xml($array, $keys = '') <br>{ <br>global $elementLevel; <br>if(!is_array($array)) <br>{ <br>if($keys == ''){ <br>return $array; <br>}else{ <br>return "\n<$keys>" . $array . "<!--$keys-->"; <br>} <br>}else{ <br>foreach ($array as $key => $value) <br>{ <br>$haveTag = true; <br>if (is_numeric($key)) <br>{ <br>$key = $keys; <br>$haveTag = false; <br>} <br>/** <br>* The first element <br>*/ <br>if($elementLevel == 0 ) <br>{ <br>$startElement = "<$key>"; <br>$endElement = "<!--$key-->"; <br>} <br>$text .= $startElement."\n"; <br>/** <br>* Other elements <br>*/ <br>if(!$haveTag) <br>{ <br>$elementLevel++; <br>$text .= "<$key>" . array_Xml($value, $key). "<!--$key-->\n"; <br>}else{ <br>$elementLevel++; <br>$text .= array_Xml($value, $key); <br>} <br>$text .= $endElement."\n"; <br>} <br>} <br>return $text; <br>} <br>?> <br> <br><strong>函数描述及例子 <br></strong><span style="CURSOR: pointer" onclick="doCopy('code7394')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--? <BR-->$array = array( <br>"employees" => array( <br>"employee" => array( <br>array( <br>"name" => "name one", <br>"position" => "position one" <br>), <br>array( <br>"name" => "name two", <br>"position" => "position two" <br>), <br>array( <br>"name" => "name three", <br>"position" => "position three" <br>) <br>) <br>) <br>); <br>echo array_Xml($array); <br>?> <br></li><li><p></p></li><li><p align="left"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/324027.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/324027.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">下面是网上的 代码如下:</span></p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li>class ArrayToXML { /** * The main function for converting to an XML document. * Pass in a multi dimensional array and this recrusively...<p></p></li><li> </li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre>