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