Как вывести содержимое тегов xml и их атрибуты в php?

Пользователь

от judd , в категории: PHP , 10 месяцев назад

Как вывести содержимое тегов xml и их атрибуты в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kyleigh_runte , 8 месяцев назад

@judd 

В PHP можно использовать DOMDocument для разбора XML-файла и получения содержимого тегов и их атрибутов. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$xmlString = '<root>
    <tag1 attribute1="value1">Content 1</tag1>
    <tag2 attribute2="value2">Content 2</tag2>
</root>';

$dom = new DOMDocument();
$dom->loadXML($xmlString);

$tags = $dom->getElementsByTagName('*');

foreach ($tags as $tag) {
    echo 'Тег: ' . $tag->nodeName . '<br>';
    
    if ($tag->hasAttributes()) {
        echo 'Атрибуты: <br>';
        
        foreach ($tag->attributes as $attribute) {
            echo $attribute->nodeName . ' = ' . $attribute->nodeValue . '<br>';
        }
    }
    
    echo 'Содержимое: ' . $tag->nodeValue . '<br><br>';
}


В результате будет выведено:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Тег: root
Содержимое:

Тег: tag1
Атрибуты:
attribute1 = value1
Содержимое: Content 1

Тег: tag2
Атрибуты:
attribute2 = value2
Содержимое: Content 2


Пользователь

от shirley.vonrueden , месяц назад

@judd 

Этот код использует DOMDocument для загрузки XML-строки, а затем получает все элементы (теги) в XML-документе. Для каждого тега выводится его имя, атрибуты (если они есть) и содержимое.


Помимо этого, можно также использовать SimpleXML в PHP для работы с XML-данными. Вот аналогичный пример, но с использованием SimpleXML:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
$xmlString = '<root>
    <tag1 attribute1="value1">Content 1</tag1>
    <tag2 attribute2="value2">Content 2</tag2>
</root>';

$xml = simplexml_load_string($xmlString);

foreach ($xml->children() as $tag) {
    echo 'Тег: ' . $tag->getName() . '<br>';
    
    $attributes = $tag->attributes();
    if (!empty($attributes)) {
        echo 'Атрибуты: <br>';
        foreach($attributes as $key => $value) {
            echo $key . ' = ' . $value . '<br>';
        }
    }
    
    echo 'Содержимое: ' . $tag . '<br><br>';
}


Этот пример делает то же самое, что и предыдущий, но использует SimpleXML для разбора XML-данных. Оба варианта подходят для работы с XML в PHP, и выбор между ними зависит от ваших предпочтений и задач.