我正在尝试在 PHP 中读取 XML 文件,编辑一些值并将其保存回来。我通过在 php.ini 中打开 XML 文件来做到这一点。然后我使用 SimpleXML 将其转换为数组。在完成所需的操作后,由于我的 XML 元素如何转换为属性,我正在努力将该数组以相同的格式返回到 XML 文件中。因此,当我从数组转到 XML 时,我的元素(现在是属性)被保存为更新后的 XML 文件中的属性。
我想知道从 php 数组转换回 XML 时是否可以保留 XML 元素。
一个包含两个元素的随机 XML 示例,我们称之为 myFile.xml
<XML>
<Project Element1 = 'some random value' Element2='Will be stored as attribute instead'>
</XML>
我将运行的 php 代码将其转换为数组
<?php
$xml = simplexml_load_file("myFile.xml") or die("Error: Cannot create object");
$arrayXML = json_decode(json_encode((array)$xml), TRUE);
$arrayXML["Project"]["attributes"]["Element1"] = "updated value"
// I will then run some array to XML converter code here found online
// took it from here https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml
function array_to_xml( $data, &$xml_data ) {
foreach( $data as $key => $value ) {
if( is_array($value) ) {
if( is_numeric($key) ){
$key = 'item'.$key; //dealing with <0/>..<n/> issues
}
$subnode = $xml_data->addChild($key);
array_to_xml($value, $subnode);
} else {
$xml_data->addChild("$key",htmlspecialchars("$value"));
}
}
}
$xml_data = new SimpleXMLElement();
array_to_xml($arrayNexus,$xml_data);
saving generated xml file;
$result = $xml_data->asXML('myFile.xml');
?>
像这样的东西会生成这样的 XML 文件
<XML>
<Project>
<attribute>
<Element1>updated value</Element1>
<Element2><Will be stored as attribute instead</Element2>
</attribute>
</Project>
</XML>
当我想要的结果是
<XML>
<Project Element1 = 'updated value' Element2='Will be stored as attribute instead'>
</XML>
我可以编写自己的 XML 转换器,但如果已经存在方法,有人可以告诉我方法吗?