Php 将数据追加到XML文件

Php 将数据追加到XML文件,php,xml,Php,Xml,我使用CubeGallery3D,它与XML文件一起存储 XML结构如下所示: 我想附上: <thumbnail preview="This is Preview" previewURL="This is URL" thumb="This is Thumb"> <title><![CDATA[This is Title]]></title> <discription><![CDATA[Th

我使用CubeGallery3D,它与XML文件一起存储

XML结构如下所示:

我想附上:

    <thumbnail preview="This is Preview" previewURL="This is URL" thumb="This is Thumb">
        <title><![CDATA[This is Title]]></title>
        <discription><![CDATA[This is Description]]></discription>
    </thumbnail>
加载sample.xml


有人能告诉我如何在文件中创建一个
元素,并像上面的例子那样向其添加参数+值吗?

与JavaScript中的DOM操作基本相同-它应该类似于

$xmlThumbnail = $xmlDoc->createElement('thumbnail');
$xmlTitle = $xmlDoc->createElement('title');
$xmlDescription = $xmlDoc->createElement('discription');

$xmlThumbnail->setAttribute('preview', $sPreview);
$xmlThumbnail->setAttribute('previewurl', $sPreviewURL); //technically in XML attributes must be in lowercase
$xmlThumbnail->setAttribute('thumb', $sThumbnail); //presumably a path?

$xmlThumbnail->appendChild($xmlTitle);
$xmlThumbnail->appendChild($xmlDescription);

$xmlDoc->appendChild($xmlThumbnail);
$xmlDoc->save('/theme1157/sample.xml');

虽然
$xmlDoc->appendChild()
如果是“真实”的XML文档,可能需要更改,因为应该有一个容器元素,所以它可能更像
$xmlDoc->firstChild->appendChild($XML缩略图)

与JavaScript中的DOM操作非常相似-它应该类似于

$xmlThumbnail = $xmlDoc->createElement('thumbnail');
$xmlTitle = $xmlDoc->createElement('title');
$xmlDescription = $xmlDoc->createElement('discription');

$xmlThumbnail->setAttribute('preview', $sPreview);
$xmlThumbnail->setAttribute('previewurl', $sPreviewURL); //technically in XML attributes must be in lowercase
$xmlThumbnail->setAttribute('thumb', $sThumbnail); //presumably a path?

$xmlThumbnail->appendChild($xmlTitle);
$xmlThumbnail->appendChild($xmlDescription);

$xmlDoc->appendChild($xmlThumbnail);
$xmlDoc->save('/theme1157/sample.xml');
虽然
$xmlDoc->appendChild()
如果是“真实”的XML文档,可能需要更改,因为应该有一个容器元素,所以它可能更像
$xmlDoc->firstChild->appendChild($XML缩略图)

尝试以下操作:

<?php
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml');



$thumbnail = $xmldoc->createElement('thumbnail');
$thumbnail->setAttribute('preview', 'This is a preview');
$thumbnail->setAttribute('previewURL', 'This is a URL');
$thumbnail->setAttribute('thumb', 'This is a Thumb');

$title = $xmldoc->createElement('title');
$title->appendChild($xmldoc->createCDATASection('This is Title'));
$thumbnail->appendChild($title);


$description = $xmldoc->createElement('description');
$description->appendChild($xmldoc->createCDATASection('This is Description'));
$thumbnail->appendChild($description);


$xmldoc->getElementsByTagName('thumbnails')->item(0)->appendChild($thumbnail);
$xmldoc->save('sample.xml');
试试这个:

<?php
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml');



$thumbnail = $xmldoc->createElement('thumbnail');
$thumbnail->setAttribute('preview', 'This is a preview');
$thumbnail->setAttribute('previewURL', 'This is a URL');
$thumbnail->setAttribute('thumb', 'This is a Thumb');

$title = $xmldoc->createElement('title');
$title->appendChild($xmldoc->createCDATASection('This is Title'));
$thumbnail->appendChild($title);


$description = $xmldoc->createElement('description');
$description->appendChild($xmldoc->createCDATASection('This is Description'));
$thumbnail->appendChild($description);


$xmldoc->getElementsByTagName('thumbnails')->item(0)->appendChild($thumbnail);
$xmldoc->save('sample.xml');

不确定这是否有效-因为XML应该只有一个根元素。是的-更新它以添加到
$xmlDoc->firstChild->
位;虽然我见过很多“不真实”的XML文档,它们只是在没有容器的情况下释放出一堆元素。但我不确定这是否会起作用-因为XML应该只有一个根元素。是的-将其更新为添加到
$xmlDoc->firstChild->
位;虽然我见过很多“不真实”的XML文档,它们只是在没有容器的情况下释放出一堆元素!这几乎奏效了!标题和描述中的<显示为,整个元素在外部,所以是:元素在这里见,谢谢。。请看这个嘿!这几乎奏效了!标题和描述中的<显示为,整个元素在外部,所以是:元素在这里见,谢谢。。请看这个