cari

Rumah  >  Soal Jawab  >  teks badan

PHP 8.1.2 - Gelagat DOMDocument yang tidak dijangka semasa menyimpan dan memformat data XML

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);

P粉026665919P粉026665919243 hari yang lalu433

membalas semua(1)saya akan balas

  • P粉491421413

    P粉4914214132024-03-30 10:23:18

    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...

    $config_xml_element_instance[0] = $new_config_data->appendChild($config_xml_element_instance[$config_xml_element_id]);

    Elemen baharu sedang ditambah pada akar dokumen baharu. Untuk menambahkannya pada elemen konfigurasi, tambahkannya pada $config_xml_element_instance[0]...

    $config_xml_element_instance[0]->appendChild($config_xml_element_instance[$config_xml_element_id]);

    balas
    0
  • Batalbalas