XML iyi oluşmuş değil hatası

6 Cevap php

I have a php script that writes xml data to a file and another one that sends the contents of this file to the client as the response. But on the client side,im getting the following error: XML Parsing Error: not well-formed When i view source of the page, the XML i see is as follows:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<books><date>December 24th, 2009</date><total>2</total><book><name>Book 1</name><url>http://www.mydomain.com/posters/68370/img.jpg</url></book><book><name>Book 2</name><url>http://www.anotherdomain.com/posters/76198/img1.jpg</url></book></books>

Dosya1.php i bir dosyaya XML yazar aşağıdaki kodu var:

$file= fopen("book_results.xml", "w");
$xml_writer = new XMLWriter();
$xml_writer->openMemory();
$xml_writer->startDocument('1.0', 'UTF-8', 'yes');
$xml_writer->startElement('books');
$xml_writer->writeElement('date',get_current_date());   // Like December 23rd, 2009
$xml_writer->writeElement('total',$totalResults);   
foreach($bookList as $key => $value) { /* $bookList contains key value pairs */
    $xml_writer->startElement('book');
    $xml_writer->writeElement('name',$key);
    $xml_writer->writeElement('url',$value);
    $xml_writer->endElement(); //book
}
$xml_writer->endElement(); //books
$xml_data = $xml_writer->outputMemory();
fwrite($file,$xml_data);
fclose($file);

Ve index.php i bir tepki olarak dosyanın içeriğini göndermek için aşağıdaki kodu var

<?php
    //Send the xml file contents as response
    header('Content-type: text/xml');
    readfile('book_results.xml');
?>

Ne hata neden olabilir?

Please help. Thank You.

6 Cevap

Yukarıdaki (Eğer özel bir bileşeni aracılığıyla XML oluşturan olduğunuz gerçeği de dahil olmak üzere) bana iyi görünüyor ve ya:

  1. ne bu doğrulamak için kullandığınız yanlış
  2. Eğer düşünmek ne farklı bir şey bakıyoruz

Kesinlikle başka bir aracı / tarayıcı / Bu doğrulamak için ne olursa olsun denemek istiyorum. Ayrıca, tarayıcıya gönderilen olarak XML dosyasını kaydedin ve XMLStarlet (bir komut satırı XML araç seti) kullanarak kontrol etmek isteyebilirsiniz.

Bir karakter kodlama sorununuz veya (kodlamalar ile ilgili) bir Byte Order Mark sorunu - biz kolayca göremiyorum bir sorun olmadığını ben de merak ediyorum. Eğer maç / yolluyoruz web sayfasının karakter kodlaması XML (UTF-8) kodlaması farklı mı.

XML geçerliliği için kontrol etmek için bazı ücretsiz web siteleri ve araçları vardır.

Ben textarea içine yukarıdaki XML yapıştırılan zaman göre XML Validator, bu "hata bulunamadı" dedi.

Ancak, Validome "eleman 'kitap' bildirimi bulamıyor" diyor.

Belki öznitelikleri için date ve total değişen Jeff'in önerisi yardımcı olabilir. Muhtemelen bu denemek için kolay olurdu.

Yerine nitelikleri gibi bu 2 gevşek tarih ve toplam etiketlerini kullanarak denediniz mi?:

<books date="December 24th" total="2">

Ayrıca, xml oldukça duyarlı olabilir. Kullandığınızdan emin olun CDATA etiketler uygun bulundu

Bu WMHelp XMLPad 3.0.1.0 ince doğrular ve hatasız Firefox 3.0.8 ve IE7 ince açılır.

Ben XML bir kopyalama ve yapıştırma gelen görebilirsiniz tek şey, XML bildirimi bir CR / LF kombinasyonu (0x0D0x0A) tarafından takip olmasıdır. Bu platform spesifik (Windows) ve istemci üzerinde bir sorun olabilir; Eğer müşteri, ancak, ne söz etmedi, bu yüzden bu sorun emin olamaz.

Lütfen denetleyicisi destekliyorsa (Eğer varsa, bir metin editörü veya 'dosya' komutu ile testi) dosyaya UTF-8 veya 7-bit ASCII kodlama yazarken emin olun, ve bu. UTF-8 değil ise bazen nadiren eğer varsa bazı araçlar karıştırır ve bu ilk üç bayt bir imza (bazen bayt sırası işareti denir) (EF BB BF) içerebilir unutmayın.

xml version = '1 .0 'encoding =' UTF-8 'standalone =' yes '

tek tırnak kullanın.