我嘗試使用DOMDocument 和下面的程式碼使用loadXML()、saveXML() 和save() 將一些設定資料輸出到XML 文件,但是XML 檔案總是具有如下結構(注意Configuration /,但不是配置/配置),而且我無法使用preserveWhiteSpace = false 和formatOutput = true 使XML 縮排起作用。 「Configuration/」來自哪裡,為什麼 Authentication_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>
我使用的程式碼如下:
//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);
P粉4914214132024-03-30 10:23:18
您將所有節點新增到文件的根中,因此沒有層次結構,並且配置節點沒有內容(因為它是空的,所以顯示「」。
我認為問題所在的行是從元素 id 加到 0 之後的位置...
$config_xml_element_instance[0] = $new_config_data->appendChild($config_xml_element_instance[$config_xml_element_id]);
正在將新元素新增到新文件的根目錄中。若要將其新增至配置元素,請將其新增至 $config_xml_element_instance[0]
...
$config_xml_element_instance[0]->appendChild($config_xml_element_instance[$config_xml_element_id]);