Вы используете DOM API для чтения XML.Тот же API можно использовать для создания и изменения документов XML.Создайте узел, используя метод DOMDocument::create*()
, и добавьте / вставьте его, используя DOMNode
методы, такие как appendChild()
или insertBefore()
.
. В следующих примерах я оптимизировал чтение, используя выражения Xpath.
$html = <<<'HTML'
<table>
<tr>
<td>1. lokalita</td>
<td>2. celkem</td>
</tr>
</table>
HTML;
// the source HTML document
$source = new \DOMDocument();
// loadHTMLFile() for files / loadHTML() for strings
$source->loadHTML($html);
$xpath = new \DOMXpath($source);
// the new target XML document
$target = new \DOMDocument();
// add a root element
$target->appendChild($target->createElement('data'));
// iterate the table rows in the source
foreach ($xpath->evaluate('//table/tr') as $row) {
// an element for the group
$target->documentElement->appendChild(
$locationNode = $target->createElement('umístění')
);
// first table cell
$locationNode
->appendChild($target->createElement('lokalita'))
->appendChild($target->createTextNode($xpath->evaluate('string(td[1])', $row)));
// second table cell
$locationNode
->appendChild($target->createElement('celkem'))
->appendChild($target->createTextNode($xpath->evaluate('string(td[2])', $row)));
// ...
}
$target->formatOutput = TRUE;
echo $target->saveXML();
Выход:
<?xml version="1.0"?>
<data>
<umístění>
<lokalita>1. lokalita</lokalita>
<celkem>2. celkem</celkem>
</umístění>
</data>