-
- class ArrayToXML
- {
- /**
- * XML ドキュメントに変換するためのメイン関数。
- * 多次元配列を渡すと、再帰的にループして XML ドキュメントを構築します。
- *
- * @param array $data
- * @param string $rootNodeName - whatルートノードをデフォルトのデータにします
- * @param SimpleXMLElement $xml - 再帰的にのみ使用する必要があります
- * @return string XML
- */
- public static function toXml($data, $rootNodeName = 'data', $xml=null)
- {
- //turn単純な XML が不安定になるため、互換モードをオフにしないと問題が発生します。 $xml == null)
- {
- $xml = simplexml_load_string("<$rootNodeName />");
- }
-
- //渡されたデータをループ処理します。
- foreach($data as $key => $value)
- {
- // XML に数値キーは含まないでください!
- if (is_numeric($key))
- {
- // 文字列を作成しますkey...
- $key = "unknownNode_"。 (string) $key;
- }
-
- // 英数字以外のものを置き換えます
- $key = preg_replace('/[^a-z]/i', '', $key);
-
- // 別の配列が見つかった場合この関数を再帰的に呼び出します
- if (is_array($value))
- {
- $node = $xml->addChild($key);
- // 再帰的に呼び出します。
- ArrayToXML::toXml($value, $rootNodeName, $node );
- }
- else
- {
- // 単一ノードを追加します
- $value = htmlentities($value);
- $xml->addChild($key,$value);
- }
-
- }
- // パスバック文字列として。必要に応じて、単純な XML オブジェクトも使用できます!
- return $xml->asXML();
- }
- }
-
-
- 复制代
-
-
- 2、自己書的php数组转xmlの代
function arrtoxml($arr,$dom=0,$item=0){ if (!$dom){ $dom = new DOMDocument("1.0"); } - if(!$item){
- $item = $dom->createElement("root");
- $dom->appendChild($item);
- }
- foreach ($arr as $key=>$val){
- $itemx = $dom->createElement(is_string($key)?$key:" item");
- $item->appendChild($itemx);
- if (!is_array($val)){
- $text = $dom->createTextNode($val);
- $itemx->appendChild( $text);
-
- }else {
- arrtoxml($val,$dom,$itemx);
- }
- }
- return $dom->saveXML();
- }
- ?>
-
-
- 复制代
-
-
-
|