【问题标题】:How do I add new elements to XML using PHP DOM deeper than the root?如何使用比根更深的 PHP DOM 向 XML 添加新元素?
【发布时间】:2010-10-18 03:33:01
【问题描述】:

我可以在网上找到的所有关于此的示例都只是简单地将内容添加到文档根目录的 XML 文件中,但我确实需要做的更深入。

我的 XML 文件很简单,我有:

<?xml v1 etc>
<channel>
<screenshots>
<item>
  <title>Image Title</title>
  <link>www.link.com/image.jpg</link>
</item>
</screenshots>
</channel>

我想要做的就是添加新的“项目”元素,每个元素都有一个标题和链接。我知道我需要使用 PHP DOM,但是对于如何对其进行编码以便它在“屏幕截图”中添加数据而不是覆盖整个文档,我感到很困惑。我怀疑我可能也需要使用 XPath,但我不知道该怎么做!

我从网上的例子拼凑出来的代码是这样的(但我敢肯定它是错的)

$newshottitle = "My new screenshot";
$newshotlink = "http://www.image.com/image.jpg";

$dom = newDomDocument;
$dom->formatOutput = true;
$dom->load("../xml/screenshots.xml");

$dom->getElementsByTagName("screenshots");
$t = $dom->createElement("item");
$t = $dom->createElement("title");
$t->appendChild($dom->createTextNode("$newshottitle"));

$l = $dom->createElement("link");
$l->appendChild($dom->createTextNode("$newshotlink"));

$dom->save("../xml/screenshots.xml");

【问题讨论】:

    标签: php xml dom xpath


    【解决方案1】:

    在文档根目录向 XML 文件添加内容,但我确实需要做的更深入。

    您目前没有在任何地方添加内容!您创建带有文本的

    和 <link> 元素节点,然后对它们不做任何事情。您应该将它们传递给 <item> 元素节点上的“appendChild”(您当前正在创建它并通过不将其分配给变量而立即将其丢弃)。 <p>这是一个起点:</p> <pre><code>$screenshots= $dom->getElementsByTagName("screenshots")[0]; $title= $dom->createElement("title"); $title->appendChild($dom->createTextNode($newshottitle)); $item= $dom->createElement("item"); $item->appendChild($title); $screenshots->appendChild($item); </code></pre> </item>

    【讨论】:

    • 感谢 bobince,我发现我已经被各种版本的 PHP 文档弄糊涂了,还有 DOM 和 DOM XML 示例可供选择。
    猜你喜欢
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多