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.
62 lines
1.5 KiB
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;
|
||
|
}
|
||
|
}
|
||
|
?>
|