Sto codificando un lettore RSS in Javascript utilizzando XMLHttpRequest
.Lettura della sezione CDATA XML con]] in esso
Per alcuni feed RSS ho avuto problemi ma in alcuni casi l'attributo xmlDocument.firstChild
sempre stato NULL
Dopo aver cercato di vedere le differenze tra l'XML che ha funzionato e quelli che non hanno lavorato ho scoperto che il seguente è la causa dell'errore.
<item>
<description>
<![CDATA[This is a description for a test [...]]]>
</description>
</item>
Perché in questa descrizione tag ho una parentesi di chiusura seguito dalle parentesi della CDATA chiusura sta causando il mio errore, ho fatto un codice con C# utilizzando LINQ per lo stesso XML e tutto funzionava.
La parentesi di chiusura che si trova appena prima delle parentesi di chiusura del CDATA causa questo strano comportamento. Come test ho provato a leggere lo stesso XML usando C# e LINQ, tutto ha funzionato bene.
poi ho cercato di aggiungere uno spazio tra le parentesi di chiusura, come la seguente
<![CDATA[This is a description for a test [...] ]]>
e ha funzionato!
mio codice javascript
function LoadRSS() {
http_request.onreadystatechange = function() { showContent(http_request); };
http_request.open("GET", "./feeds/test.xml", true);
http_request.send(false);
}
function showContent(http_request) {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var parser = new DOMParser();
var xml_doc = parser.parseFromString(http_request.responseText, "text/xml");
alert(xml_doc.firstChild)
}
else {
xml_doc = null;
}
}
}
Qualcuno ha affrontato qualcosa di simile? Ora davvero non so come procedere, qualsiasi commento e suggerimento sono ben accetti.
Questo sembra essere un bug nel parser XML. Quale sistema operativo/browser/versione stai usando? – Phrogz
Il browser si chiama OBIGO, è un browser per cellulari – YasuDevil
Sì, browser spezzato. La sezione CDATA può contenere le combinazioni ']]'; solo pieno ']]>' lo conclude. – StaxMan