Пробовал много разных сценариев, и в итоге я оказался рядом с решением, но не знал, как определить его. Пробовал «@name» и «name». Все скрипты, которые я пробовал, копируются здесь и там и меняются для моего использования.merge xml childs with php
В XMLs есть 1 узел и 1 ребенок каждый. Не должно быть намного проще, чем это, но не повезло. Можно упомянуть, что я также хочу, чтобы ссылка на таблицу стилей xsl была объединена, но я думаю, что просто зашуршала над решением для этого, но забыла закладок на странице.
XML 1:
<?xml version="1.0" encoding="utf-8"?>
<companyroutes>
<route name="BBUPLOAD">ENGM OKSAT L996 SVD EKCH</route>
</companyroutes>
XML 2:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xml" href="merge2.xsl"?>
<companyroutes>
<route name="XXXXCORE">RUTA TULLA L666 BARE LITT MNOP</route>
</companyroutes>
И код PHP (этот файл находится в том же директории, что и выходной файл:
<?php
$doc1 = new DOMDocument();
$doc1->load('/uploads/companyroutes.xml');
$doc2 = new DOMDocument();
$doc2->load('/uploads/companyroutes_core.xml');
// get 'res' element of document 1
$res1 = $doc1->getElementsByTagName('res')->name(0);
// iterate over '@name' elements of document 2
$companyroutes2 = $doc2->getElementsByTagName('name');
for ($i = 0; $i < $companyroutes2->length; $i ++) {
$name2 = $companyroutes2->name($i);
// import/copy @name from document 2 to document 1
$name1 = $doc1->importNode($name2, true);
// append imported @name to document 1 'res' element
$res1->appendChild($name1);
}
$doc1->save('companyroutes.xml');
?>
Любые указатели оценивается.
Будут ли $ x1 и $ x2 быть URL-адресами двух файлов xml? Вроде: $ x1 = ('/uploads/companyroutes.xml'); – NAX
@NAX в моем примере, это строки. Посмотрите на ссылку в моем ответе. Вместо этого вы можете использовать simplexml_load_file с именами файлов. – michi
Поэтому я просто меняю первые две строки: $ xml = simplexml_load_file ('/ uploads/companyroutes_core.xml'); ... и $ xml2 = simplexml_load_file ('/ uploads/companyroutes.xml') ... Могу ли я добавить строку после команды echo, чтобы скрипт копировал результат xml и вставлял его в Companyroutes_core.xml? Мне нужна эта функция, чтобы гарантировать, что результат xml является ядром для следующего слияния. /uploads/companyroutes.xml загружается многими пользователями, добавляя их новые записи в объединенный файл.Если ядро не обновлено, новые записи будут потеряны при загрузке и слиянии следующего пользователя. Возможно, файл_put? – NAX