如果我知道只有一个元素有这个名字(XML(PHP DOM))我怎么选择它


If I know there is only gonna be one element with that name (XML(PHP DOM)), how can I select it?

我正在尝试添加一些从表单接收到的数据到已经存在的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