Получить данные из элемента xml с динамическими подэлементами

Это пример xml, который мне нужен для доступа к его элементам. В этом примере мне нужно выполнить цикл для добавления еще одного -> для перехода к другому элементу. Я буду получать значения из XML, а не генерировать XML

<Person>
      <Address>
         <State>
            <Code>101</Code>
         </State>
      </Address>    
</Person>    
<Person>
      <Address>
         <State>
            <Code>101</Code>
         </State>
         <Phone> 123456789</Phone>
      </Address>   
</Person>

Код:

for($i=0; $i< count(Person); $i++)
{
  $element .= '->{<<element>>['.$i.']}';            
}

//output would something be like an element to get data from XML:        `
$person->{'Address'}->{'State'}->{'Code'};`

Возможный дубликат Как динамически сгенерировать файл XML с помощью PHP?

Loek 04.07.2018 16:42

привет, я не пытаюсь сгенерировать XML, я получаю доступ к его элементу динамически

dairinjan 04.07.2018 16:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
42
1

Ответы 1

Я думаю, вы можете использовать SimpleXML.

$item в цикле относится к типу SimpleXMLElement, из которого вы можете получить такие свойства, как $item->Address->State->Code.

$data = <<<DATA
<Persons>
<Person>
      <Address>
         <State>
            <Code>101</Code>
         </State>
      </Address>    
</Person>    
<Person>
      <Address>
         <State>
            <Code>101</Code>
         </State>
         <Phone> 123456789</Phone>
      </Address>   
</Person>
</Persons>
DATA;

$items = simplexml_load_string($data);
foreach ($items as $item) {
    echo $item->Address->State->Code;
}

Демо

Если вы хотите использовать цикл for и счетчик, вы можете использовать:

$items = simplexml_load_string($data);
$count = count($items->Person);
for ($i = 0; $i < $count; $i++) {
    echo $items->Person[$i]->Address->State->Code;
}

Для этого: foreach ($items as $item) { echo $item->Address->State->Code; } есть способ сделать что-то вроде $total_elements_inside_item= count($items); for($i=0;$i<=$total_elements_inside_item $i++) { $item->{element[0]} then next loop wil be $item->{element[1]}->{element[2]} }

dairinjan 04.07.2018 17:36

@djan Я добавил обновление к своему ответу. Но почему бы не использовать foreach?

The fourth bird 04.07.2018 17:55

Другие вопросы по теме