PHP数组转换为XML,但格式不同

PHP数组转换为XML,但格式不同,php,xml,Php,Xml,我有一个PHP数组,它成功地创建了一个xml文件。。但是,我需要更改XML文件中的格式。目前,它生产以下产品: <markers> <marker> <info1></info1> <info2></info2> </marker> </markers> 我需要它这样显示: <markers> <marker info1=

我有一个PHP数组,它成功地创建了一个xml文件。。但是,我需要更改XML文件中的格式。目前,它生产以下产品:

<markers>
    <marker>
        <info1></info1>
        <info2></info2>
    </marker>
</markers>

我需要它这样显示:

<markers>
    <marker info1="43.5" info2="-79.6888888888889" />
</markers>

下面是我用来从PHP数组创建XML文件的PHP代码

// creating object of SimpleXMLElement
$xml_student_info = new SimpleXMLElement("<?xml version=\"1.0\"?><markers></markers>");

// function call to convert array to xml
array_to_xml($store,$xml_student_info);

//saving generated xml file
$xml_student_info->asXML('xmltest.xml');


// function defination to convert array to xml
function array_to_xml($store, &$xml_student_info) {
    foreach($store as $key => $value) {
        if(is_array($value)) {
            if(!is_numeric($key)){
                $subnode = $xml_student_info->addChild("$key");
                array_to_xml($value, $subnode);
            }
            else{
                $subnode = $xml_student_info->addChild("marker");
                array_to_xml($value, $subnode);
            }
        }
        else {
            $xml_student_info->addChild("$key","$value");
        }
    }
}
//正在创建SimpleXMLElement的对象
$xml\u student\u info=新的SimpleXMLElement(“”);
//将数组转换为xml的函数调用
数组到xml($store,$xml\u student\u info);
//保存生成的xml文件
$xml_student_info->asXML('xmltest.xml');
//将数组转换为xml的函数定义
函数数组到xml($store,&$xml\u student\u info){
foreach($存储为$key=>$value){
if(是_数组($value)){
如果(!是数字($key)){
$subnode=$xml\u student\u info->addChild($key”);
数组到xml($value,$subnode);
}
否则{
$subnode=$xml\u student\u info->addChild(“标记”);
数组到xml($value,$subnode);
}
}
否则{
$xml\u student\u info->addChild($key,“$value”);
}
}
}

谢谢你的帮助

您需要使用addAttribute方法。 看看下面我的代码:)

“测试”、“属性2”=>“测试”),
数组('attr3'=>'test','attr4'=>'test'),
);
数组到xml($store,$xml\u student\u info);
$xml_student_info->asXML('xmltest.xml');
函数数组到xml($store,&$xml\u student\u info){
foreach($存储为$key=>$value){
if(是_数组($value)){
$child=$xml\u student\u info->addChild(“标记”);
foreach($k=>v的值){
$child->addAttribute($k“,$v”);
}
}否则{
$child=$xml\u student\u info->addChild(“标记”);
$child->addAttribute($key,“$value”);
}
}
}
?>
输出

<?xml version="1.0"?>
<markers><marker attr1="test" attr2="test"/><marker attr3="test" attr4="test"/></markers>


您的脚本总是使用
addChild
来有效地添加子脚本。您需要使用on“marker”来添加这两个属性。完成此操作后,我得到的错误是“致命错误:在中的非对象上调用成员函数addChild()”,它引用的是底部的addChild行。
<?xml version="1.0"?>
<markers><marker attr1="test" attr2="test"/><marker attr3="test" attr4="test"/></markers>