PHP поиск между двумя точками

1

Я пытаюсь разобраться с некоторыми XML в PHP.

У меня есть код, например:

<?php 
$stream = fopen("xml","r");
?>

Где "xml" содержит что-то вроде этого:

<name>name1</name>
<key>key1</key>
<name>name2</name>
<key>key2</key>

и т.п.

Я хотел бы создать массив из содержимого тегов <key>, что-то вроде keys[0] = "key1" и keys[1] = "key2"

Любая помощь приветствуется, спасибо вам большое :)

Решение:

$xmlstr = fread($stream,filesize("xml-file"));
$sxe = new SimpleXMLElement($xmlstr);
echo $sxe->getName() . "\n";
foreach ($sxe->children() as $child) {
    echo $child->children();
}
  • 1
    Используйте парсер xml, пожалуйста
  • 0
    Можете ли вы порекомендовать один, пожалуйста, @ Rizier123?
Показать ещё 3 комментария
Теги:

1 ответ

1

Вы должны использовать функции DOM для этого случая. Предположим, что хорошо сформированный XML-документ (xmltest.xml):

<?xml version="1.0" encoding="utf-8"?>
  <root>
    <name>name1</name>
    <key>key1</key>
    <name>name2</name>
    <key>key2</key>
  </root>

Этот код загружает XML файл в документ DOM и получает все узлы с key тега;

<?php
$dom = new DOMDocument('1.0','utf-8');
$dom->load('xmltest.xml');
$keys = $dom->getElementsByTagName('key');
for ($i = 0; $i < $keys->length; $i++) {
    echo $keys->item($i)->nodeValue . "</br>";
}
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню