Saya cuba menggunakan DOMDocument dan kod di bawah untuk mengeluarkan beberapa data konfigurasi ke fail XML menggunakan loadXML(), saveXML() dan save(), tetapi fail XML sentiasa mempunyai struktur seperti berikut (nota Konfigurasi/, tetapi tidak Konfigurasi/Konfigurasi ), dan saya tidak boleh mendapatkan lekukan XML untuk berfungsi menggunakan preserveWhiteSpace = false dan formatOutput = true. Dari manakah datangnya "Konfigurasi/" dan mengapa tiada klausa penutup selepas Pengesahan_Key_2?
<?xml version="1.0" encoding="UTF-8"?> <Configuration/> <FullProductName>Text</FullProductName> <Copyright>Text</Copyright> <Version>Text</Version> <Website>Text</Website> <Database_Password>NDE2NDYxNmQ0ODZmNmU2NTZiMzEzOTM4MzE=</Database_Password> <Authentication_Key_1>MDY0ZmRhMDYwYzkxMjVkNzk1M2U4YzUx</Authentication_Key_1> <Authentication_Key_2>ZjllYWFjYmQ5NTEyYmNiNWE4MmYwZj==</Authentication_Key_2>
Kod yang saya gunakan adalah seperti berikut:
//Create the config data structure. $new_config_data = new DOMDocument("1.0", "UTF-8"); $config_xml_element_name[0] = "Configuration"; $config_xml_element_name[1] = "FullProductName"; $config_xml_element_name[2] = "Copyright"; $config_xml_element_name[3] = "Version"; $config_xml_element_name[4] = "Website"; $config_xml_element_name[5] = "Database_Password"; $config_xml_element_name[6] = "Authentication_Key_1"; $config_xml_element_name[7] = "Authentication_Key_2"; $config_xml_element_instance[0] = $new_config_data->createElement($config_xml_element_name[0]); $config_xml_element_instance[1] = $new_config_data->createElement($config_xml_element_name[1], $FullProductName); $config_xml_element_instance[2] = $new_config_data->createElement($config_xml_element_name[2], $ThisProductSoftwareHouse); $config_xml_element_instance[3] = $new_config_data->createElement($config_xml_element_name[3], $ThisProductVersion); $config_xml_element_instance[4] = $new_config_data->createElement($config_xml_element_name[4], $ThisProductWebsite); $config_xml_element_instance[5] = $new_config_data->createElement($config_xml_element_name[5], $_POST['postgresql-password']); $config_xml_element_instance[6] = $new_config_data->createElement($config_xml_element_name[6], $_POST['secret-key1']); $config_xml_element_instance[7] = $new_config_data->createElement($config_xml_element_name[7], $_POST['secret-key2']); //Go through array of config file elements and append them to data structure for ($config_xml_element_id = 0; $config_xml_element_id < count($config_xml_element_instance); $config_xml_element_id++) { //If this is the Root element then append it to config data structure as Root if ($config_xml_element_id == 0) { $new_config_data->appendChild($config_xml_element_instance[0]); //Otherwise append it to config data structure as Child element of Root element } else { $config_xml_element_instance[0] = $new_config_data->appendChild($config_xml_element_instance[$config_xml_element_id]); } } $Config_create_file_path = $_SERVER['DOCUMENT_ROOT'] .$ParentProductRootPath .$ParentProductSubPath .$ThisProductTopPath ."/Application/Config/"; $Config_create_file = ucfirst($ThisProductFilePrependName) ."_config.xml"; $Config_create_file_string = $Config_create_file_path .$Config_create_file; //If the Config directory does not exist then create it if (!file_exists($Config_create_file_path)) { mkdir($Config_create_file_path, 0777, true); } //Save compiled config data structure to XML file $ConfigDataXml = $new_config_data->saveXML(); $new_config_data->preserveWhiteSpace = false; $new_config_data->formatOutput = true; $new_config_data->loadXML($ConfigDataXml); $new_config_data->saveXML(); $config_write = $new_config_data->save($Config_create_file_string);
Anda menambah semua nod pada akar dokumen, jadi tiada hierarki dan nod konfigurasi tidak mempunyai kandungan (ia menunjukkan "" kerana ia kosong.
Saya rasa garis di mana masalahnya adalah dari kedudukan selepas id elemen ditambah kepada 0...
Elemen baharu sedang ditambah pada akar dokumen baharu. Untuk menambahkannya pada elemen konfigurasi, tambahkannya pada
$config_xml_element_instance[0]
...