簡體   English   中英

XML驗證錯誤:“找不到元素“ example”的聲明。”

[英]XML Validation error: 'Can not find declaration of element “example”.'

我正在使用PHP的SimpleXML對象從頭開始創建XML文件。 但是驗證文檔時出現此錯誤:“找不到元素“ example”的聲明。”

這是創建XML文檔的代碼:

    $xml = new SimpleXMLElement('<example></example>');
    $xml->addChild('producers');

    foreach($producers as $i=>$producer){
       $name = get_the_title($producer->ID);
       $owner = get_post_meta($producer->ID, '_producer_contact_name', true);
       $phone = get_post_meta($producer->ID, '_producer_phone', true);
       $fax = get_post_meta($producer->ID, '_producer_fax', true);
       $email = get_post_meta($producer->ID, '_producer_email', true);
       $website = get_post_meta($producer->ID, '_producer_website', true);
       $address = get_post_meta($producer->ID, '_producer_address', true);

       $xml->producers->addChild('producer');
       $xml->producers->producer[$i]->addChild('name', $name);
       $xml->producers->producer[$i]->addChild('owner', $owner);
       $xml->producers->producer[$i]->addChild('phone', $phone);
       $xml->producers->producer[$i]->addChild('fax', $fax);
       $xml->producers->producer[$i]->addChild('email', $email);
       $xml->producers->producer[$i]->addChild('website', $website);
       $xml->producers->producer[$i]->addChild('civic', $address[0]); 
       $xml->producers->producer[$i]->addChild('mailing', $address[1]); 
       $xml->producers->producer[$i]->addChild('town', $address[2]); 
       $xml->producers->producer[$i]->addChild('province', $address[3]); 
       $xml->producers->producer[$i]->addChild('postal', $address[4]);           
    }

    $open = fopen($file, 'w') or die ("File cannot be opened.");
    fwrite($open, $xml->asXML());
    fclose($open);

生成的XML是這樣的:

<?xml version="1.0"?>
   <example>
      <producers>
         <producer>
            <name></name>
            <phone></phone>
            <fax></fax>
            <email></email>
            <website></website>
            <civic></civic>
            <mailing></mailing>
            <town></town>
            <province></province>
            <postal></postal>
         </producer>
      </producers>
   </example>

任何幫助,將不勝感激! 謝謝

XML文件需要一些文檔類型定義(DTD)XML Schema對其進行驗證 您沒有提供任何內容,因此無法進行驗證(即檢查XML文檔的結構/內容是否符合DTD / Schema中規定的規則)。

還是您只是想檢查格式是否正確(即檢查所有標簽是否正確關閉,在任何地方都沒有非法字符等)?

為了驗證XML文檔,您需要一個DTD (或XML Schema )來描述有效文檔的外觀。 您需要為您的XML應用程序編寫一個DTD example.dtd ,並將其提供給驗證程序,或通過在其前面加上前綴將其包含在XML文檔中。

<!DOCTYPE example SYSTEM "example.dtd">

由於SimpleXML不支持doctype,因此您必須手動為上述行添加前綴或使用php的DOM擴展名。 幸運的是,您可以使用dom_import_simplexml將SimpleXML片段導入DOM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM