使用PHP和DOM以正确的格式保存XML

时间:2012-11-10 17:22:36

标签: php xml dom xml-parsing

我在使用PHP&更新我的XML时遇到了问题。 DOM.My XML文件采用以下格式:

原始XML(及所需的xml布局):

<?xml version="1.0" standalone="yes"?>
<Rows>
  <Row CustomerAccountNumber="COU002" />
  <Row CustomerAccountNumber="COU023" />
  <Row CustomerAccountNumber="C2335" />
  <Row CustomerAccountNumber="CvbU002" />

保存的代码即将新记录添加到XML(customer.xml):

<?php

$xmldoc=new DOMDocument();
$xmldoc->load('XML/customer.xml');

$newAct= 'c12345';

$root = $xmldoc->firstChild;

$newElement= $xmldoc->createElement('CustomerAccountNumber');
$root->appendChild($newElement);
$newText= $xmldoc->createTextNode($newAct);
$newElement->appendChild($newText);

$xmldoc->save('XML/customer.xml');
 ?>

问题:代码正在以这种格式生成新记录:

  <Rows>
  <Row CustomerAccountNumber="COU002" />
  <Row CustomerAccountNumber="COU023" />
  <Row CustomerAccountNumber="C2335" />
  <Row CustomerAccountNumber="CvbU002" />
  <CustomerAccountNumber>c12345</CustomerAccountNumber>

</Rows>

我无法理解我在哪里犯错误。我想保留原来的XML格式。我想要上述原始格式的输出文件(见上)。请指导我并指出我在哪里犯错误这会在文件本身生成错误的格式.Plz help

1 个答案:

答案 0 :(得分:1)

您的问题是,您目前正在创建新的CustomerAccountNumber 元素。相反,您要创建新的Row元素,然后create a new CustomerAccountNumber attribute

$newElement = $xmldoc->createElement('Row');
$newAttribute = $xmldoc->createAttribute('CustomerAccountNumber');
$newAttribute->value = $newAct;
$newElement->appendChild($newAttribute);
$root->appendChild($newElement);