【问题标题】:insert multiple data in xml with php dom使用php dom在xml中插入多个数据
【发布时间】:2010-07-29 11:27:08
【问题描述】:

因为我是 xml 新手,所以我尝试了 the code over here,将数据插入到 xml 中,这很有效。但我想将多个数据插入 xml。我将如何实现这一目标?例如:

<root>
<no>1</no>
<activity>swimming</activity>
<date>29/7/2010</date>
<others>
   <data1>data1</data1>
   <data2>data2</data2>
   <data3>data3</data3>
   so on..
</others>
<no>2</no>
<activity>sleeping</activity>
<date>29/7/2010</date>
<others>
   <data1>data1</data1>
   <data2>data2</data2>
   <data3>data3</data3>
   so on..
</others>
</root>

index.php:

<?php

error_reporting(E_ALL);
ini_set("display_errors", 1);

    $xmldoc = new DOMDocument();
    $xmldoc->load('sample.xml', LIBXML_NOBLANKS);

    $activities = $xmldoc->firstChild->firstChild;
    if($activities != null){
            while($activities != null){
                            ?>
            <div id="xml">
                <span>
                <?php echo $activities->textContent ?> </span> <br />

            </div>
                        <?php
                        $activities = $activities->nextSibling;
            }
        }
 ?>

<body>
<form name="input" action="insert.php" method="post">
    Insert Activity:
    <input type="text" name="activity" />
    <input type="submit" value="Send" />
</form>
</body>
</html>

插入.php:

<?php
    header("Location: index.php");

    $xmldoc = new DOMDocument();
    $xmldoc->load('sample.xml');
    $newAct = $_POST['activity'];

    $root = $xmldoc->firstChild;
    $newElement = $xmldoc->createElement('activity');
    $root->appendChild($newElement);
    $newText = $xmldoc->createTextNode($newAct);
    $newElement->appendChild($newText);
    $xmldoc->save('sample.xml');

?>

上面的代码只插入一个节点。我想知道如何插入多个节点和子节点

【问题讨论】:

  • 您的问题是什么或什么不起作用?请添加更多解释。
  • 上面的代码只插入了一个节点。我想知道如何插入多个节点和子节点。

标签: php xml domdocument


【解决方案1】:

如果你的意思是“如何在一个方法调用中一次插入多个节点”,答案是:不可能。

使用 DOM 的方法始终相同:创建一个节点并将其附加到某处。逐个。

在上面的示例中,您可以省略 TextNode 创建并将字符串内容作为第二个参数添加到 createNode。不过,这不会使用自动转义和实体编码。

唯一的大规模创建方法DOMDocumentFragment::appendXML。这将采用任意 XML 字符串作为输入。这是非标准的。

【讨论】:

    猜你喜欢
    • 2016-01-01
    • 2017-10-07
    • 1970-01-01
    • 2011-05-31
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    相关资源
    最近更新 更多