Если я знаю, что будет только один элемент с таким именем (XML (PHP DOM)), как я могу его выбрать? - PullRequest
0 голосов
/ 17 декабря 2011

Я пытаюсь добавить некоторые данные, полученные из формы, в файл XML, который уже существует.Я использую DOMDocument в PHP для добавления данных в файл ...

Хотя я несколько успешно добавляю данные, это добавление в неправильный элемент.

Теперь я знаю, что тамбудет только один элемент с определенным именем, который будет корневым элементом.Я также знаю, что будет только один элемент с именем, который будет содержать другие данные.

У этих элементов нет идентификатора, и я хочу прочитать их getElementsByTagName в PHP с использованием DOMDocument.

Итак, если я знаю, что во всем файле будет только один элемент с таким именем, тогда я могу сделать что-то вроде этого:

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

Я имею в видуя могу выбрать только первый элемент в массиве?И как мне это сделать?Поскольку приведенный выше код не работает.

Ответы [ 2 ]

3 голосов
/ 17 декабря 2011

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] должен быть элементом, который вы ищете.

2 голосов
/ 17 декабря 2011

Возвращаемое значение из getElementsByTagName() является DOMNodeList объектом, который не массив. Доступ к отдельным элементам в списке осуществляется по методу item().

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

См:

* * 1010 http://php.net/domdocument.getelementsbytagname http://php.net/domnodelist http://php.net/domnodelist.item
...