【问题标题】:trying to edit xml file using php simplexml尝试使用 php simplexml 编辑 xml 文件
【发布时间】:2017-10-29 08:58:56
【问题描述】:

所以我正在尝试使用 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

【问题讨论】:

    标签: php xml simplexml saving-data


    【解决方案1】:

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

    的原因

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

    如果没有指定文件名,这个函数返回一个字符串 成功,FALSE 出错。如果指定了参数,则 如果文件写入成功则返回TRUEFALSE 否则。

    因此,一旦您使用提示更新了 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');
     }
    

    【讨论】:

    • 编辑:经过一些测试,我再次使用$settings->asXml('settings.xml');,所以它保存了整个设置 xml 文件的内容:D 非常感谢先生,它工作得很好
    猜你喜欢
    • 2023-04-03
    • 2011-01-06
    • 2014-05-06
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多