I have an XML like this:
<Categories>
<Category Code="3014" Name="category-a" MasterCode="3015" />
<Category Code="3015" Name="category-b" MasterCode="3010" />
<Category Code="3010" Name="category-c" MasterCode="0" />
</Categories>
I want to change this XML to this:
<Categories>
<Category1>category-a</Category1>
<Category2>category-b</Category2>
<Category3>category-c</Category3>
</Categories>
I have tried a many sample code solutions without success.
Update. i solved this problem with this code
foreach ($item->getElementsByTagName('Categories') AS $item2) {
$tip = 0;
foreach ($item2->getElementsByTagName('Category') AS $item3) {
$tip += 1;
$item2->appendChild($xmlDoc->createElement('Category' . $tip, $item3->getAttribute('Name')));
$delete[] = $item3;
}
}
Here is your xml file:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Categories>
<Category Code="3014" Name="category-a" MasterCode="3015" />
<Category Code="3015" Name="category-b" MasterCode="3010" />
<Category Code="3010" Name="category-c" MasterCode="0" />
</Categories>
</root>
Here is your php file:
$xmlDoc = new DOMDocument();
$xmlDoc->load('safa.xml');
$delete = array();
$tip = 1;
foreach ($xmlDoc->getElementsByTagName('Categories') AS $key => $item2) {
foreach ($xmlDoc->getElementsByTagName('Category') AS $key => $item) {
$item2->appendChild($xmlDoc->createElement('Category' . $tip, $item->getAttribute('Name')));
$delete[] = $item;
$tip += 1;
}
}
foreach ($delete as $del) {
$del->parentNode->removeChild($del);
}
$XMLData = $xmlDoc->saveXML();
fopen('safa_dump.xml', 'w');
file_put_contents('safa_dump.xml', $XMLData);
Here is your dump xml file:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Categories>
<Category1>category-a</Category1>
<Category2>category-b</Category2>
<Category3>category-c</Category3>
</Categories>
</root>