Как получить определенный тег в DOMDocument в PHP?

У меня есть переменные документы, которые мне нужно изменить на лету. Например, у меня может быть документ следующего содержания:

<!--?xml version="1.0"?-->
<item>
    <tag1></tag1>
</item>
<tag2>
    <item></item>
    <item></item>
</tag2>

Это очень упрощенный, но у меня есть теги с одинаковым именем на разных уровнях. Я хочу получить теги элементов в 'tag2'. Фактические теги в файлах, которые мне даны, имеют уникальные идентификаторы для их различения, а также некоторые другие атрибуты. Мне нужно найти тег, прокомментировать его и сохранить xml. Мне удалось получить DOMDocument для возврата узла " tag2, но я не уверен, как получить доступ к тегам элементов в этой структуре.

3 ответов


Это такая проблема, что PHP DOMDocument класс выделяется на. Сначала загрузите строку XML с помощью loadHTML() метод, а затем используйте выражение XPath для обхода дерева DOM:

$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$item_tags = $xpath->query('//tag2/item');
foreach ($item_tags as $tag) {
    echo $tag->tagName, PHP_EOL; // example
}

онлайн демо


<?php
$tag= new DOMDocument();
$tag->loadHTML($string);

foreach ($tag->getElementsByTagName("tag") as $element) 
{
    echo $tag->saveXML($element);
}
?>

может быть поможет вам .попробуйте!--2-->


$DOMNode -> attributes -> getNamedItem( 'yourAttribute' ) -> value;