我创建了一个用于接受 $key=>$value 对数组的简单方法。我想遍历该数组并构建一个 simpleXML 对象。该方法几乎有效;但是,它会在每次迭代中覆盖我的子节点。
编码:
public function format_comment($fieldValues)
{
$xml = new SimpleXMLElement("<ROOT></ROOT>");
foreach($fieldValues as $field=>$value)
{
if($field=='header')
{
$xmlChange = $xml->addChild('CHANGE');
$xmlChange->addAttribute('field', $value);
}
elseif($field=='subheader')
{
$newXML = $xmlChange->addChild('NEW');
$newXML->addAttribute('field', $value);
}
elseif($field=='newvalue')
{
$xmlNewValue = $newXML->addChild('VALUE', $value);
}
elseif($field=='oldvalue')
{
$xmlFrom = $xmlChange->addChild('FROM');
$xmlFrom->addAttribute('field', $field);
$xmlFromValue = $xmlFrom->addChild('VALUE', $value);
}
}
return($xml->asXML());
}
作为输入,我使用以下数组:
$note_fields = array('header'=>'Communication', 'subheader'=>'contacted', 'newvalue'=>'Dale J Neimeier','header'=>'Communication', 'subheader'=>'note', 'newvalue'=>'blah blah blah', 'header'=>'Communication', 'subheader'=>'note', 'newvalue'=>'new text', 'oldvalue'=>'previous text');
我的输出如下:
<ROOT>
<CHANGE field="Communication">
<NEW field="note">
<VALUE>new text</VALUE>
</NEW>
<FROM field="oldvalue">
<VALUE>previous text</VALUE>
</FROM>
</CHANGE>
</ROOT>
我可以看到,通过我的数组的每次迭代,“CHANGE”标签和它的所有孩子都会被覆盖。我只是不知道为什么以及如何修复它。
非常感激任何的帮助。