修改现有 XML 文档中的节点值并用 DOM PHP 打印结果
Amend node value in existing XML document and print result with DOM PHP
我正在寻找使用 PHP 中的 DOM 替换节点值的最佳方法。
一个示例 XML 将存储为 data.xml:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
我一直在关注 https://www.w3schools.com/php/php_xml_dom.asp,它非常适合使用以下代码打印出 XML 文件而无需任何编辑:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("data.xml");
print $xmlDoc->saveXML();
?>
现在我不确定如何编辑值,例如,将 Jani 更改为 Smith 并打印新更改的 xmlDoc。
尝试:
$xpath = new DOMXPath($xmlDoc);
$from = $xpath->query('/note//from')[0];
$from->nodeValue="John";
echo $xmlDoc->saveXML();
输出:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
我正在寻找使用 PHP 中的 DOM 替换节点值的最佳方法。
一个示例 XML 将存储为 data.xml:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
我一直在关注 https://www.w3schools.com/php/php_xml_dom.asp,它非常适合使用以下代码打印出 XML 文件而无需任何编辑:
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("data.xml");
print $xmlDoc->saveXML();
?>
现在我不确定如何编辑值,例如,将 Jani 更改为 Smith 并打印新更改的 xmlDoc。
尝试:
$xpath = new DOMXPath($xmlDoc);
$from = $xpath->query('/note//from')[0];
$from->nodeValue="John";
echo $xmlDoc->saveXML();
输出:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>