我正在尝试添加一些从表单接收到的数据到已经存在的XML文件。我在PHP中使用DOMDocument将数据添加到文件中…
虽然我在添加数据方面有些成功,但它添加到错误的元素中。
现在我知道只有一个元素具有特定的名称,它将是根元素。我还知道,只有一个元素的名称将包含其他数据。
这些元素没有ID,我想在PHP中使用DOMDocument通过getElementsByTagName
读取它们。
如果我知道整个文件中只有一个元素具有相同的名称,那么我可以这样做吗:
$element = $dom->getElementByTagName('ElementName'); $element[0];
我的意思是我可以只选择数组中的第一个元素吗?我该怎么做呢?因为上面的代码不起作用
TagName是html或xml标记的名称。如果只有一个,你应该可以这样做:
$element = $dom->getElementByTagName('ElementName')->item(0);
然而,听起来你真正想要的东西可以用xpath来完成:
$xpath = new DOMXPath($dom);
$elements = $xpath->query("//*[@name='ElementName']");
foreach ($elements as $node)
{
$element[] = $node;
}
现在$element[0]应该是你要找的元素
getElementsByTagName()
的返回值是DOMNodeList
对象,该对象是而不是数组。访问列表中的单个项目是通过item()
方法。
$element = $dom->getElementByTagName('ElementName')->item(0);
:
- http://php.net/domdocument.getelementsbytagname
- http://php.net/domnodelist
- http://php.net/domnodelist.item