php生成xml(组装、DomDocument、XMLWriter、SimpleXML)数据
1、组装字符串
/** * 按照xml方式输出通信数据 * @param $code [状态码] * @param string $message [提示信息] * @param array $data [数据] * @return string */ public static function XMLEncode($code,$message='',$data=array()) { if(!is_numeric($code)) { return ''; } $result = array( 'code' => $code, 'message' => $message, 'data' => $data ); header("Content-Type:application/xml"); $xml = "<?xml version = '1.0' encoding = 'UTF-8'?>\n"; $xml.= "<root>\n"; $xml.= self::XMLToEncode($result); $xml.= "</root>"; echo $xml; } /** * 获取xml内容 * @param $data [数组] * @return string */ private static function XMLToEncode($data) { $xml = $attr = ''; foreach ($data as $key => $value) { if(is_numeric($key)) { $attr = "id='{$key}'"; $key = "item"; } $xml.= "<{$key} {$attr}>"; $xml.= is_array($value) ? self::XMLToEncode($value) : $value; $xml.= "</{$key}>\n"; } return $xml; }
2、DomDocument生成XML
/** * @param $data [数组] * @param string $item [根节点名称] * @param string $version [版本号] * @param string $encoding [字符编码] * @return string */ public static function DomDocument($data,$item = 'root',$version = '1.0',$encoding = 'utf-8') { //判断是否传输的是数组并且保证里面有数据 if(!is_array($data) && count($data) !== 0) { return ''; } //设置xml版本与字符集 $doc = new DOMDocument($version,$encoding); $root = self::xmlContent($data,$doc,$item); $doc->appendChild($root);//把根节点挂载在DOMDocument对象 $doc->save('stu.xml'); header("Content-Type:application/xml"); $content = file_get_contents('stu.xml'); print_r($content); } /** * 遍历xml内容 * @param $data [数组] * @param $domDocument [对象] * @param $item [根目录] * @return array; */ private static function xmlContent($data,$domDocument,$item) { //创建根节点 if(is_numeric($item)) { $root = $domDocument->createElement('node'); $id = $domDocument->createAttribute('id'); $value = $domDocument->createTextNode($item); $id->appendChild($value); $root->appendChild($id); } else { $root = $domDocument->createElement($item); } foreach ($data as $key => $value) { if(is_array($value) && count($value) !== 0) { //子节点 $items = self::xmlContent($value,$domDocument,$key); } else { if (is_numeric($key)) { $domElement = $domDocument->createElement('node', $value); $domAttribute = $domDocument->createAttribute('id'); $domAttribute->value = $key; $domElement->appendChild($domAttribute); $items = $domDocument->appendChild($domElement); } else { $items = $domDocument->createElement($key, $value); } } $root->appendChild($items); } return $root; }
3、XMLWriter 生成XML
4、SimpleXML生成XML

浙公网安备 33010602011771号