尝试使用php simplexml编辑xml文件

时间:2017-10-29 08:58:57

标签: php xml simplexml saving-data

所以我试图使用php的simplexml扩展名编辑一个xml文件,但是我遇到了一些问题 我试过的时候

  $settings = simplexml_load_file("settings.xml");
  ....
  if(isset($aInformation['cName'])) 
  {
     $settings->general->communityname = $aInformation['cName'];
     $settings->asXML();
  }

但是我在保存步骤中失败了......

  $settings = simplexml_load_file("settings.xml");
  $xmlconfigs = new SimpleXMLElement($settings); 
  ....
  if(isset($aInformation['cName'])) 
  {
     $settings->general->communityname = $aInformation['cName'];
     $xmlconfigs->asXML();
  }      

但我也错了

  String couldn't be parsed to XML...

之前我曾尝试搜索这些帖子,但它们与我失败的示例代码相同edit XML with simpleXMLPHP SimpleXML error update xml file

1 个答案:

答案 0 :(得分:0)

第二个是不可能的,因为SimpleXMLElement只能获取格式良好的XML字符串或XML文档的路径或URL。但是您传递的是由SimpleXMLElement返回的类simplexml_load_file的对象。这就是它抛出错误String couldn't be parsed to XML...

的原因

在第一个方法中,asXML()方法接受一个可选的文件名作为参数,将当前结构作为XML保存到文件中。

  

如果未指定文件名,则此函数返回一个字符串   成功和FALSE出错。如果指定了参数,则为   如果文件写成功并TRUE,则返回FALSE   否则。

因此,一旦使用提示更新了XML,只需将其保存回文件即可。

$settings = simplexml_load_file("settings.xml");
....
if(isset($aInformation['cName'])) 
 {
   $settings->general->communityname = $aInformation['cName'];
   // Saving the whole modified XML to a new filename
   $settings->asXml('updated_settings.xml');
   // Save only the modified node
   $settings->general->communityname->asXml('settings.xml');
 }