昨天波波基于PHP的simpleXML写了一个给xml文件追加节点的函数,写完后发现导出的xml文件标签全都在一行,没有换行符。所以今天波波再补充一个能输出xml文件节点换行的函数。
xml追加节点原始内容参见:https://www.zkii.net/tech/php/2542.html
带换行的xml文件追加节点函数:
- /*
- * Xml文件增加节点
- * @param $filename string 文件路径
- * @param $data array 追加数组
- * @param $nodename string 节点名称
- * @return boole
- */
- function addXmlNode($filename,$data,$nodename){
- if(is_array($data) && !emptyempty($data) && is_file($filename) && is_string($nodename)){
- $contents = file_get_contents($filename);
- $xml = @simplexml_load_string($contents);
- foreach($data as $key=>$value){
- foreach($data[$key] as $k=>$v){
- $item = $xml->addChild($nodename);
- $item->addChild($k,$v);
- }
- }
- $xml->asXML();
- $xmlDocument = new DOMDocument('1.0');
- $xmlDocument->preserveWhiteSpace = false;
- $xmlDocument->formatOutput = true;
- $xmlDocument->loadXML($xml->asXML(),LIBXML_NOERROR);
- $res = file_put_contents($filename,$xmlDocument->saveXML());
- return $res !== false?true:$res;
- }else{
- throw new \think\Exception('Incorrect parameters');
- }
- }
因为simpleXml本身并不提供xml文件格式化的方法,因此上述代码片段19~22行引入了DomDocument()。
两个方法区别就这么多,需要的朋友可以直接复制。