Как найти нужный путь до элемента 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 .= ' ';
$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;
}
}
Просьба без сильной критики по коду, ибо я только учусь.