используя PHP для редактирования xml - вставьте после последнего - PullRequest
0 голосов
/ 17 сентября 2018

Так что у меня есть этот код, который генерируется в основном из ответов на вопросы, задаваемые здесь.Я хочу добавить новый после последнего существующего.это мой пример 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 );

1 Ответ

0 голосов
/ 17 сентября 2018

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

Просмотр документов"Ссылочный узел. Если не указан, 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>
...