php - 通过 SimpleXML PHP 编辑 XML 节点

标签 php xml xml-parsing simplexml

我知道类似的问题已经被问过好几次了,但我找不到以下问题的解决方案:

我有一个简单的 XML 文件: 服务器.xml

<servers>

    <server>
        <name> Google </name>
        <address>http://www.google.com</address>
    </server>

    <server> 
        <name> Yahoo </name>
        <address>http://www.yahoo.com</address>
    </server>

    <server>
        <name> Bing </name>
        <address>http://www.bing.com</address>
    </server>

</servers>

现在,我正在尝试获取 <server>例如名称为“Google”的节点,然后更改地址标签。 我不知道如何使用 SimpleXML 来处理它。 因此,示例场景如下:

  1. 获取服务器对象/数组,其中 $serverName = "Google"
  2. 将服务器的地址字段编辑为不同的内容,例如 http://www.google.co.uk
  3. 将更改写回 XML 文件。

如有任何帮助,我们将不胜感激。

最佳答案

  1. 获取 $serverName = "Google"的服务器对象/数组

    // An array of all <server> elements with the chosen name
    $googles = $servers->xpath('server[name = " Google "]');
    
  2. 将服务器的地址字段编辑为不同的内容,例如 http://www.google.co.uk

    //Find a google and change its address
    $google->address = 'http://www.google.co.uk';
    
  3. 将更改写回 XML 文件。

    $servers->saveXML('path/to/file.xml');
    

完整示例

$servers = simplexml_load_file('path/to/file.xml');
$googles = $servers->xpath('server[name=" Google "]');
foreach ($googles as $google) {
    $google->address = 'http://www.google.co.uk';
}
$servers->saveXML('path/to/file.xml');

更多信息

关于php - 通过 SimpleXML PHP 编辑 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17658197/

相关文章:

java - AndroidManifest.xml 中的应用程序无法通过谷歌搜索警告进行索引

Javascript XML 对象 - 未定义

c# - 如何使用 C# 从 xml 文档中删除重复元素而不用乱写 xml 结构

c# - 如何使用没有关联前缀的命名空间在 C# 中读取 XML 文档

php - mysql中如何使用GROUP BY连接字符串

java - 运行 docx4j createhtml.java 文件时出错

php - 在 codeception 中丢失 session /cookies - 我怎样才能保持登录到我的网站?

java - 管理内存中非常大的 xml

php - 字符串中最长的单词

javascript - 如何使用 jQuery 和 JavaScript 获取 URL 的特定部分?