используя PHP для редактирования xml — вставьте после последнего

Так что у меня есть этот код, который генерируется в основном из ответов на вопросы, задаваемые здесь.
Я хочу добавить новый после последнего существующего.
это мой пример кода XML (с большим количеством меток):

 <Folder>
<Placemark>
<name><![CDATA[scscsc]]></name>
<description><![CDATA[Description:ascasc<c,ascascasc<br>]]></description>
<styleUrl>#placemark-brown</styleUrl>
<ExtendedData>
</ExtendedData>
<Point>
<coordinates>24.069631625000056,-23.784080251008078,0</coordinates>
</Point>
</Placemark>
</Folder>

то, что я в настоящее время имею в php, это вставить новый перед последним, и я хочу его после последнего.
PHP-код:

    // find the Folder tag
$root = $xmldoc->getElementsByTagName('Folder')->item(0);

// create the <placemark> tag
$placemark = $xmldoc->createElement('Placemark');

// add the placemark tag After the last element in the <Folder> tag
$root->insertBefore( $placemark, $root->lastChild );

0

Решение

Я не уверен, что мне не хватает того, что вы имеете в виду, но у меня все получилось?

Глядя на документы «Ссылочный узел. Если он не указан, newnode добавляется к дочерним элементам».

Так что, хотя он и добавлялся для меня в любом случае, может, просто пропустить второй параметр?

$root->insertBefore( $placemark );

(Сохраните ваш xml в file.xml)

$xmldoc = new DOMDocument();
$xmldoc->load("file.xml");

// find the Folder tag
$root = $xmldoc->getElementsByTagName('Folder')->item(0);

// create the <placemark> tag
$placemark = $xmldoc->createElement('Placemark');

// add the placemark tag After the last element in the <Folder> tag
$root->insertBefore( $placemark );

$xmldoc->save('file.xml', LIBXML_NOEMPTYTAG);

Какой вывод следующий

    <?xml version="1.0"?>
<Folder>
<Placemark>
<name><![CDATA[scscsc]]></name>
<description><![CDATA[Description:ascasc<c,ascascasc<br>]]></description>
<styleUrl>#placemark-brown</styleUrl>
<ExtendedData>
</ExtendedData>
<Point>
<coordinates>24.069631625000056,-23.784080251008078,0</coordinates>
</Point>
</Placemark>
<Placemark></Placemark>
</Folder>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]