У меня в xml вот такие атрибуты (см. файл )
<Address>
<adrs:OKATO>45263594000</adrs:OKATO>
<adrs:KLADR>77000000000318700</adrs:KLADR>
<adrs:Region>77</adrs:Region>
<adrs:Street Name="Электрозаводская" Type="ул" />
<adrs:Level1 Type="д" Value="29" />
<adrs:Level3 Type="строен" Value="1" />
</Address>
и кусочек кода, где я пытаюсь собрать адрес, если его нет целиком
<?php
$file = 'test.xml';
$data = simplexml_load_file($file);
$Address = $data->Realty->Building->Address->children('adrs', TRUE);
if (!isset($Address->Note)) {
$adress_array = [
'Street' => 'Name',
'Level1' => 'Value',
'Level2' => 'Value',
'Level3' => 'Value',
];
$note = [];
foreach ($Address AS $key=>$val){
if (array_key_exists($key, $adress_array)) {
$attrValue = $val->attributes()->Value;
if ($key == 'Street') {
// Это рабочий вариант
//$attrValue = $val->attributes()->Name;
// Это не рабочий вариант
// как прописать динамический ?
$attrValue = $val[ $adress_array[$key] ];
}
$note[] = (string)$val->attributes()->Type.". ". (string)$attrValue;
}
}
// И это кстати тоже не хочет работать
$Address->addChild('Note', implode(' ',$note));
print_r($Address);
echo $Address->Note."\n";
}