You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yanzong/extend/suning-sdk-php/ArrayXML.php

62 lines
1.5 KiB

8 months ago
<?php
class ArrayXML {
/**
* 数组转换为xml
*
* @param array $arr
* @param int $level
* @return string
*/
public static function arrayToXml($arr, $level = 0) {
$s = $level == 0 ? '<?xml version="1.0" encoding="UTF-8"?>' : '';
foreach ( $arr as $key => $value ) {
if (is_array ( $value )) {
$s .= "<" . $key . ">" . ArrayXML::arrayToXml ( $value, 1 ) . "</" . $key . ">";
} else {
$s .= "<" . $key . ">" . $value . "</" . $key . ">";
}
}
return $s;
}
/**
* 数组转换为xml(去除空节点)
*
* @param array $arr
* @param int $level
* @return string
*/
public static function customToXml($arr, $level = 0) {
$s = $level == 0 ? '<?xml version="1.0" encoding="UTF-8"?>' : '';
foreach ( $arr as $key => $value ) {
if (is_array ( $value )) {
$s .= "<" . $key . ">" . ArrayXML::customToXml ( $value, 1 ) . "</" . $key . ">";
} else {
if ($value == "0" || !empty($value)) {
$s .= "<" . $key . ">" . $value . "</" . $key . ">";
}
}
}
return $s;
}
/**
* xml转为数组
*
* @param string $xml
* @param string $version
* @param string $charset
* @return array
*/
public static function xmlToarray($xml, $version = "1.0", $charset = "utf-8") {
$doc = new DOMDocument ( $version, $charset );
$doc->loadXML ( $xml );
$result = domNodeToArray ( $doc );
if (isset ( $result ['#document'] )) {
$result = $result ['#document'];
}
return $result;
}
}
?>