PHP使用simpleXML导出的xml文件没有换行符?

昨天波波基于PHP的simpleXML写了一个给xml文件追加节点的函数,写完后发现导出的xml文件标签全都在一行,没有换行符。所以今天波波再补充一个能输出xml文件节点换行的函数。

xml追加节点原始内容参见:https://www.zkii.net/tech/php/2542.html

带换行的xml文件追加节点函数:

  1. /*
  2.  * Xml文件增加节点
  3.  * @param $filename string 文件路径
  4.  * @param $data array 追加数组
  5.  * @param $nodename string 节点名称
  6.  * @return boole
  7.  */
  8. function addXmlNode($filename,$data,$nodename){
  9.     if(is_array($data) && !emptyempty($data) && is_file($filename) && is_string($nodename)){
  10.         $contents = file_get_contents($filename);
  11.         $xml = @simplexml_load_string($contents);
  12.         foreach($data as $key=>$value){
  13.             foreach($data[$keyas $k=>$v){
  14.                 $item = $xml->addChild($nodename);
  15.                 $item->addChild($k,$v);
  16.             }
  17.         }
  18.         $xml->asXML();
  19.         $xmlDocument = new DOMDocument('1.0');
  20.         $xmlDocument->preserveWhiteSpace = false;
  21.         $xmlDocument->formatOutput = true;
  22.         $xmlDocument->loadXML($xml->asXML(),LIBXML_NOERROR);
  23.         $res = file_put_contents($filename,$xmlDocument->saveXML());
  24.         return  $res !== false?true:$res;
  25.     }else{
  26.         throw new \think\Exception('Incorrect parameters');
  27.     }
  28. }

因为simpleXml本身并不提供xml文件格式化的方法,因此上述代码片段19~22行引入了DomDocument()。

两个方法区别就这么多,需要的朋友可以直接复制。

 

 

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!