Как найти нужный путь до элемента xml?

Всем доброе время суток. В коде представленном ниже будет показано то, как я попытался вывести все элементы и их значения на страницу браузера с сохранением иерархии. Далее будет определенный функционал для изменения/добавления/удаления элементов в xml файле со страницы браузера(но это мелочи). Для того же изменения значения элемента нужно будет знать путь до него, и поэтому у меня возник вопрос о том, как мне не зная какой элемент захочет изменить пользователь узнать путь до него и сохранить измененное значение? введите сюда описание изображения

XML Code

Это пока не полный код, как будет сделан весь функционал, я его дополню. Подразумевается что будет несколько <flight> элементов, поэтому я их в цикле перебираю(заранее, если возникнут вопросы по этому поводу)

<?xml version='1.0' encoding='UTF-8'?>
<airport>
    <flight>
        <number>13-02</number>
        <airplane>
            <serial>567</serial>
            <number>8910</number>
            <airline>
                <code>444</code>
                <name>Pobeda</name>
                <passenger>
                    <code>555</code>
                    <fullName>Ivanov Ivan</fullName>
                    <passport>7667567657</passport>
                    <place>
                        <number>17A</number>
                        <class>Business</class>
                    </place>
                </passenger>
            </airline>
        </airplane>
        <route>
            <code>666</code>
            <departure>
                <code>777</code>
                <name>Tyumen</name>
            </departure>
            <arrival>
                <code>888</code>
                <name>Moscow</name>
            </arrival>
        </route>
    </flight>
</airport>

PHP Code

<?php

class XmlParseController
{
    protected $container = '';
    protected $xml_file;

    public function __construct()
    {
        $this->xml_file = simplexml_load_file('air.xml');
    }

    public function getXml($num)
    {
        $res = [];
        $flight = $this->xml_file->children();
        foreach ($flight as $data) {
            $res[] = "<div class='flex'>{$this->getChildren($data)}</div>";
            $this->container = '';
        }
        return $res[$num];
    }

    protected function getChildren($data, $spaces = '')
    {
        $name = strtoupper($data->getName());
        $spaces .= '&nbsp;&nbsp;&nbsp;&nbsp;';
        $this->container .= "<br>{$spaces}<b><span>{$name}</span></b><br>";
        foreach ($data as $child) {
            if ($child->children() != false) {
                $this->getChildren($child, $spaces);
            } else {
                $name = strtoupper($child->getName());
                $this->container .= "{$spaces}<b>{$name}: </b>$child<br>";
            }
        }
        return $this->container;
    }
}

Просьба без сильной критики по коду, ибо я только учусь.


Ответы (0 шт):