/**
* 输出XML
*
* @param mixed $data 数据
* @param bool $push (true: echo & die | false: return) 是否立即显示并终止程序
* @param bool $indent 是否格式化缩进
* @param string $root 根标签名称
* @param array $attr 根标签属性数组
* @param string $item 项目标签名称
* @param string $id 当数据为索引数组时,项目标签属性的名称
* @param string $encoding 编码
* @return string
*/
function pushXml($data, $push = true, $indent = false, $root = 'data', $attr = [], $item = 'item', $id = 'id', $encoding = 'utf-8')
{
$eol = ($indent === true) ? PHP_EOL : '';
$_attr = '';
foreach ($attr as $key => $val) {
$_attr .= ' ' . $key . '="' . $val . '"';
}
$xml = '<?xml version="1.0" encoding="' . $encoding . '"?>' . $eol;
$xml .= '<' . $root . $_attr . '>' . $eol;
$xml .= parseDataToXml($data, $item, $id, $indent);
$xml .= '</' . $root . '>';
if ($push === true) {
echo $xml;
die();
}
return $xml;
}
/**
* 数据转换XML
*
* @param mixed $data
* @param string $item
* @param string $id
* @param string $indent
* @param int $level
* @return string
*/
function parseDataToXml($data, $item = 'item', $id = 'id', $indent = false, $level = 1)
{
$eol = ($indent === true) ? PHP_EOL : '';
$space = ($indent === true) ? str_repeat(' ', $level) : '';
$xml = $attr = '';
if (empty($data)) {
return $xml;
}
foreach ($data as $key => $val) {
if (is_int($key) && $key >= 0) {
if (! empty($id)) {
$attr = ' ' . $id . '="' . $key . '"';
}
$key = $item;
}
$xml .= $space . '<' . $key . $attr . '>';
if (is_array($val) || is_object($val)) {
$level ++;
$xml .= $eol . parseDataToXml($val, $item, $id, $indent, $level);
$level --;
$xml .= $space . '</' . $key . '>' . $eol;
} else {
$xml .= $val;
$xml .= '</' . $key . '>' . $eol;
}
}
return $xml;
}
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询