我有一个看起来像这样的 XML 文件。
<collections id="my collections">
<category id="my category">
<record id="my record">
<title>Some Info</title>
</record>
</category>
</collections>
我正在寻找用新属性替换上述 XML 文件中的任何属性的方法,使用 PHP DOM 和 Xpath。 非常感谢任何帮助
最佳答案
不确定你到底想做什么,但总体思路是:
- 您必须实例化
DOMDocument
- 并加载您的 XML 字符串:
DOMDocument::loadXML
- 然后,您必须实例化
DOMXpath
在那个文件上 - 并用它来查询文档:
DOMXPath::query
- 一旦你找到了你感兴趣的节点,你就可以操纵它
- 例如,您可以设置一个属性的值:
DOMElement::setAttribute
- 例如,您可以设置一个属性的值:
例如,在这里,您可以使用这样的东西:
$str = <<<XML
<collections id="My Collections">
<category id="my category">
<record id="my record">
<title>Some Info</title>
</record>
</category>
</collections>
XML;
$dom = new DOMDocument();
$dom->loadXML($str);
$xpath = new DOMXPath($dom);
$elements = $xpath->query('//record[@id="my record"]');
if ($elements->length >= 1) {
$element = $elements->item(0);
$element->setAttribute('id', "glop !");
}
echo '<pre>' . htmlspecialchars($dom->saveXML()) . '</pre>';
这将用“glop !
”替换它标识的节点上的 id
属性 my record
,您将获得以下 XML 作为输出:
<?xml version="1.0"?>
<collections id="My Collections">
<category id="my category">
<record id="glop !">
<title>Some Info</title>
</record>
</category>
</collections>
关于php - 修改 XML 属性 PHP DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723816/