如果我知道只有一个具有该名称的元素(XML(PHP DOM)),我该如何选择它?

发布于 2024-12-21 11:52:04 字数 445 浏览 2 评论 0原文

我正在尝试将从表单接收到的一些数据添加到已存在的 XML 文件中。我正在 PHP 中使用 DOMDocument 将数据添加到文件中...

虽然我在添加数据方面取得了一些成功,但它添加到了错误的元素中。

现在我知道只有一个具有特定名称的元素,这将是根元素。我还知道只有一个元素的名称将包含其他数据。

这些元素没有 ID,我想使用 DOMDocument 在 PHP 中通过 getElementsByTagName 读取它们。

因此,如果我知道整个文件中只有一个具有该名称的元素,那么我可以执行以下操作:

$element = $dom->getElementByTagName('ElementName'); $element[0];

我的意思是我可以只选择数组中的第一个元素吗?我该怎么做呢?因为上面的代码不起作用。

I am trying to add some data received from a form to an XML file which already exists. I am using DOMDocument in PHP for adding the data to the file...

While I am somewhat successful in adding the data, it is adding into the wrong element.

Now I know there is only gonna be one element with a certain name, which will be the root element. I also know that there is gonna be only one element with a name which will contain other data.

Those elements don't have an ID and I want to read them by getElementsByTagName in PHP using DOMDocument.

So if i know that there is gonna be only one element with that name in the whole file, then can i do something like this:

$element = $dom->getElementByTagName('ElementName'); $element[0];

I mean can I select only the first element in the array? And how should I do it? Because the code above doesn't work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

层林尽染 2024-12-28 11:52:05

getElementsByTagName() 的返回值是一个 DOMNodeList 对象,它不是一个数组。通过 item() 方法访问列表中的各个项目。

$element = $dom->getElementByTagName('ElementName')->item(0);

请参阅:

The return value from getElementsByTagName() is a DOMNodeList object, which is not an array. Access to individual items in the list is via the item() method.

$element = $dom->getElementByTagName('ElementName')->item(0);

See:

も星光 2024-12-28 11:52:04

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] 应该是您正在查找的元素。

TagName refers to the name of the html or xml tag. If there is only one you should be able to do something like this:

$element = $dom->getElementByTagName('ElementName')->item(0);

However it sounds like what you are really looking for can be done with xpath:

$xpath = new DOMXPath($dom);
$elements = $xpath->query("//*[@name='ElementName']");

foreach ($elements as $node)
{
    $element[] = $node;
}

Now $element[0] should be the element you are looking for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文