CData bölümü bitmiş değil sorun

3 Cevap php

Ben aşağıda benim için XML DOMDocument :: loadXML () kullandığımda hata alıyorum:

Warning: DOMDocument::loadXML() [domdocument.loadxml]: CData section not finished http://www.site.org/displayimage.php?album=se in Entity,
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag image line 7 in Entity
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag quizz line 3 in Entity
Warning: DOMDocument::loadXML() [domdocument.loadxml]: Premature end of data in tag quizzes line 2 in Entity
Fatal error: Call to a member function getElementsByTagName() on a non-object 

Bu benim CDATAVerisi bölümleri kapalı gibi geliyor bana ama yine de bu hatayı alıyorum. XML bu gibi görünüyor:

<?xml version="1.0" encoding="utf-8"?>
<quizzes>
<quizz>
<title><![CDATA[Title]]></title>
<descr><![CDATA[Some text here!]]></descr>
<tags><![CDATA[one tag, second tag]]></tags>
<image><![CDATA[http://www.site.org/displayimage.php?album=search&cat=0&pos=1]]></image>
<results>
<result>
<title><![CDATA[Something]]></title>
<descr><![CDATA[Some text here]]></descr>
<image><![CDATA[http://www.site.org/displayimage.php?album=search&cat=0&pos=17]]></image>
<id>1</id>
</result>
</results>
</quizz>
</quizzes>

Bana sorunun ne olduğunu keşfetmek yardımcı olabilir mi?

3 Cevap

Ben sorun cURL PHP ile bu XML geçen ile olduğunu bulduk. Ben normal bir metin olarak gönderdi, ve & ettik Bu XML karakter sonraki parametreye sınırlayıcı olarak yorumlanmıştır. Ben bu karakter kaçtı yüzden düzgün çalışmaya başladı.

Ben (ya da gerçekte kullanılan XML farklı formu sağlanan veya kullanılan xml işlemci (MEZUNLARI, bu nedir?) Adamcağız) herhangi bir hata görmüyorum.

Aynı I would recommend to avoid using CDATA sections. Use the following XML document, hangi (text-eşdeğeri) sağlanan, ve çok daha okunabilir:

<quizzes>
   <quizz>
      <title>Title</title>
      <descr>Some text here!</descr>
      <tags>one tag, second tag</tags>
      <image>http://www.site.org/displayimage.php?album=search&amp;cat=0&amp;pos=1</image>
      <results>
         <result>
            <title>Something</title>
            <descr>Some text here</descr>
            <image>http://www.site.org/displayimage.php?album=search&amp;cat=0&amp;pos=17</image>
            <id>1</id>
         </result>
      </results>
   </quizz>
</quizzes>

Maalesef sadece devletler tomaszs gibi, ben de PHP cURL üzerinden XML geçerken imi bir sorun neden olabilir keşfetti, cURL kullanarak PHP ile belirli bir davayla ilgili değil, çünkü bu konu kapanır. Ben düzgün kodlanmış 'işareti ile bilinen geçerli bir XML dizesi alıyordu ve daha sonra cURL ile başka bir adrese yönlendirme edildi. Bu gibi bir şey ...

$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL,            $fullUri);
curl_setopt($curlHandle, CURLOPT_HEADER,         false);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_CONNECTTIMEOUT, 4); // seconds
curl_setopt($curlHandle, CURLOPT_POST,           true);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS,     "xmlstr=" . $xmlstr); // Problem

Konu CURLOPT_POSTFIELDS için XML eklerken yukarıdaki son satırda oluşur. İlk kodlanmış imi bir querstring gibi, bir parametre için bir sınırlayıcı olarak görülen alır ve "xmlstr" değişken / alan kesildi.

Ben kullanılan solüsyon ile yukarıdaki son satırı değiştirmek oldu ...

curl_setopt($curlHandle, CURLOPT_POSTFIELDS,     "xmlstr=" . urlencode($xmlstr));

Bu kimse yardımcı olur umarım.