以下はネットワーク上の
复制代代码如下:
class ArrayToXML
{
/**
* XML文書に変換するためのメイン関数です。
* 多次元配列を渡すと、再帰的にループして XML ドキュメントが構築されます。
*
* @param array $data
* @param string $rootNodeName - ルート ノードに設定するもの - デフォルトのデータ。
* @param SimpleXMLElement $xml - 再帰的にのみ使用する必要があります
* @return string XML
*/
public static function toXml($data, $rootNodeName = 'data', $xml=null)
{
// 互換モードをオフにしないと単純な XML が不安定になるため、互換モードをオフにします。
if (ini_get('zend.ze1_compatibility_mode') == 1)
{
ini_set ('zend.ze1_compatibility_mode', 0);
}
if ($xml == null)
{
$xml = simplexml_load_string("<$ rootNodeName />");
}
// 渡されたデータをループします。
foreach($data as $key => $value)
{
// XML には数字キーを含めないでください。
if (is_numeric($key))
{
// 文字列キーを作成します...
$key = "unknownNode_"。 (文字列) $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();
}
}
复制代代次如下:
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();
}
复制代码代码如下:
$elementLevel = 0 ;
関数 array_Xml($array, $keys = '')
{
global $elementLevel;
if(!is_array($array))
{
if($keys == ''){
return $array;
}else{
return "n<$keys>" 。 $配列 。 "$keys>";
}
}else{
foreach ($array as $key => $value)
{
$haveTag = true;
if (is_numeric($key))
{
$key = $keys;
$haveTag = false;
}
/**
* 最初の要素
*/
if($elementLevel == 0 )
{
$startElement = "<$key>";
$endElement = "$key>";
}
$text .= $startElement."n";
/**
* その他の要素
*/
if(!$haveTag)
{
$elementLevel ;
$text .= "<$key>" 。 array_Xml($value, $key)。 "$key>n";
}else{
$elementLevel ;
$text .= array_Xml($value, $key);
}
$text .= $endElement."n";
}
}
return $text;
}
?>
复制代码代码如下:
$array = array(
"従業員" => array(
"従業員" => array(
array(
"名前" => "名前 1",
"位置" => "位置 1"
),
array(
"名前" => "名前 2",
"位置" => "位置 2"
),
array(
"name" => "名前 3",
"position" => "位置 3"
)
)
)
);
エコー array_Xml($array);
?>