Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php将xml数据附加到xml文件而不覆盖现有数据?_Php_Xml - Fatal编程技术网

如何使用php将xml数据附加到xml文件而不覆盖现有数据?

如何使用php将xml数据附加到xml文件而不覆盖现有数据?,php,xml,Php,Xml,大家好,我对php和xml有点陌生,所以请耐心听我说 我想知道如何在不使用PHP覆盖现有数据的情况下将xml数据附加到xml文件中 我这里有代码: writexml.php 当我运行这段代码时会发生什么?它会删除所有以前的数据。请提供帮助。您需要打开现有文档以向其添加信息,您上次保存的内容将覆盖现有文件 $doc = new DomDocument(); $doc->loadXML(file_get_contents('employees.xml')); foreach($doc-&g

大家好,我对php和xml有点陌生,所以请耐心听我说

我想知道如何在不使用PHP覆盖现有数据的情况下将xml数据附加到xml文件中

我这里有代码:

writexml.php



当我运行这段代码时会发生什么?它会删除所有以前的数据。请提供帮助。

您需要打开现有文档以向其添加信息,您上次保存的内容将覆盖现有文件

$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());
$doc=newDOMDocument();
$doc->formatOutput=true;
if($xml=file\u get\u contents('employees.xml'))
$doc->loadXML($xml);
$nodelist=$doc->getElementsByTagName('employees');
如果($nodelist->length==0)
{
$nodelist=$doc->createElement(“员工”);
$doc->appendChild($nodelist);
$nodelist=$doc->getElementsByTagName('employees');
}
foreach($nodelistas$key=>$node)
{
//员工容器
$element=$doc->createElement(“员工”);
$employee=$node->appendChild($element);
//名称元素
$element=$doc->createElement(“名称”);
$name=$employee->appendChild($element);
$element=$doc->createTextNode('CCC');
$name->appendChild($element);
//年龄因素
$element=$doc->createElement(“年龄”);
$age=$employee->appendChild($element);
$element=$doc->createTextNode('333');
$age->appendChild($element);
}
回显“”。htmlentities($doc->saveXML());
xml文件内容

aaa11bbb222

您需要打开现有文档以向其添加信息,最后一次保存将覆盖现有文件

$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());
$doc=newDOMDocument();
$doc->formatOutput=true;
if($xml=file\u get\u contents('employees.xml'))
$doc->loadXML($xml);
$nodelist=$doc->getElementsByTagName('employees');
如果($nodelist->length==0)
{
$nodelist=$doc->createElement(“员工”);
$doc->appendChild($nodelist);
$nodelist=$doc->getElementsByTagName('employees');
}
foreach($nodelistas$key=>$node)
{
//员工容器
$element=$doc->createElement(“员工”);
$employee=$node->appendChild($element);
//名称元素
$element=$doc->createElement(“名称”);
$name=$employee->appendChild($element);
$element=$doc->createTextNode('CCC');
$name->appendChild($element);
//年龄因素
$element=$doc->createElement(“年龄”);
$age=$employee->appendChild($element);
$element=$doc->createTextNode('333');
$age->appendChild($element);
}
回显“”。htmlentities($doc->saveXML());
xml文件内容

aaa11bbb222

您的意思是我将获取现有数据并将其与新数据一起再次保存?是的,这是正确的,您还需要在代码中添加逻辑,以防不存在,或者从新的XML文档开始处理,但上面是一个小例子,说明如何在附加新的子元素之前定位现有元素。可能不清楚,但您需要将新元素附加到$node(它将是现有文档中的原始元素)中。最后,我添加的代码用于定位现有元素,其中$node[0]将是它找到的第一个元素。从那里,您可以从$node添加子元素,如果它找不到任何内容,那么您就知道需要在文档中创建一个新元素。您的意思是我将获取现有数据并将其与新数据一起再次保存?是的,您还需要在代码中加入逻辑,以防代码不存在,或者从新的XML文档开始处理,但上面是一个小示例,说明如何在附加新的子元素之前定位现有元素。可能不清楚,但您需要将新元素附加到$node(这将是现有文档中的原始元素)最终,我添加的代码用于定位现有元素,其中$node[0]将是它找到的第一个元素。从那里,您可以从$node添加子元素,如果它找不到任何内容,则您知道需要在文档中创建一个新元素。