如何解决如何在不使用php覆盖现有数据的情况下将xml数据附加到xml文件?
| 大家好,我是php和xml的新手,请耐心等待。 我想如何将xml数据附加到xml文件,而不会覆盖使用php的现有数据。 我在这里有代码:writexml.php
<?php
$employees = array();
$employees [] = array(
\'name\' => \'Tom\',\'age\' => \'34\',\'salary\' => \"$10000\"
);
$employees [] = array(
\'name\' => \'Ryan\',\'age\' => \'20\',\'salary\' => \"$2000\"
);
$employees [] = array(
\'name\' => \'Dave\',\'salary\' => \"$2000\"
);
$doc = new DOMDocument();
$doc->formatOutput = true;
$r = $doc->createElement( \"employees\" );
$doc->appendChild( $r );
foreach( $employees as $employee )
{
$b = $doc->createElement( \"employee\" );
$name = $doc->createElement( \"name\" );
$name->appendChild(
$doc->createTextNode( $employee[\'name\'] )
);
$b->appendChild( $name );
$age = $doc->createElement( \"age\" );
$age->appendChild(
$doc->createTextNode( $employee[\'age\'] )
);
$b->appendChild( $age );
$salary = $doc->createElement( \"salary\" );
$salary->appendChild(
$doc->createTextNode( $employee[\'salary\'] )
);
$b->appendChild( $salary );
$r->appendChild( $b );
}
echo $doc->saveXML();
$doc->save(\"employees.xml\")
?>
当我运行此代码时,它将删除所有以前的数据,该怎么办。请帮助。
解决方法
您将需要打开现有文档以向其中添加信息,最后一次保存将仅覆盖现有文件。
$doc = new DomDocument();
$doc->loadXML(file_get_contents(\'employees.xml\'));
foreach($doc->getElementsByTagName(\'employees\') as $node)
{
// your current xml logic here
}
更新hafedh
$doc = new DomDocument();
$doc->formatOutput = true;
if($xml = file_get_contents(\'employees.xml\'))
$doc->loadXML($xml);
$nodelist = $doc->getElementsByTagName(\'employees\');
if($nodelist->length === 0)
{
$nodelist = $doc->createElement(\"employees\");
$doc->appendChild($nodelist);
$nodelist = $doc->getElementsByTagName(\'employees\');
}
foreach($nodelist as $key => $node)
{
// Employee Container
$element = $doc->createElement(\"employee\");
$employee = $node->appendChild($element);
// Name Element
$element = $doc->createElement(\"name\");
$name = $employee->appendChild($element);
$element = $doc->createTextNode(\'CCC\');
$name->appendChild($element);
// Age Element
$element = $doc->createElement(\"age\");
$age = $employee->appendChild($element);
$element = $doc->createTextNode(\'333\');
$age->appendChild($element);
}
echo \'<pre>\' . htmlentities($doc->saveXML());
xml文件内容
<employees><employee><name>AAA</name><age>111</age></employee><employee><name>BBB</name><age>222</age></employee></employees>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。