У меня есть довольно простой бит JavaScript, что пытаться разобрать XML-я извлеченный из метаданных в формате JPEG:Почему функция parseXML jquery не работает, когда XML выглядит нормально?
var xmlDoc;
try {
xmlDoc = $.parseXML(xmlString);
} catch(e) {
console.log(e);
}
Вот исключение, которое брошено:
Invalid XML: <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/">
<photoshop:Instructions>C1DDZVs9Sr+DG5R9eSc%9w</photoshop:Instructions>
</rdf:Description>
<rdf:Description rdf:about=""
xmlns:aux="http://ns.adobe.com/exif/1.0/aux/">
<aux:SerialNumber>1</aux:SerialNumber>
<aux:Lens>AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED [II]</aux:Lens>
<aux:LensID>1</aux:LensID>
<aux:ImageNumber>6651</aux:ImageNumber>
<aux:FlashCompensation>0/1</aux:FlashCompensation>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
Там похоже, что-то не так с этим XML. В самом деле, если я вырезать и вставить, что XML в непосредственно, исключение не выбрасывается:
var xmlDoc;
try {
xmlDoc = $.parseXML('<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> <photoshop:Instructions>C1DDZVs9Sr+DG5R9eSc%9w</photoshop:Instructions> </rdf:Description> <rdf:Description rdf:about="" xmlns:aux="http://ns.adobe.com/exif/1.0/aux/"> <aux:SerialNumber>1</aux:SerialNumber> <aux:Lens>AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED [II]</aux:Lens> <aux:LensID>1</aux:LensID> <aux:ImageNumber>6651</aux:ImageNumber> <aux:FlashCompensation>0/1</aux:FlashCompensation> </rdf:Description> </rdf:RDF> </x:xmpmeta>');
} catch(e) {
console.log("error parsing xml: " + e);
}
Я могу только предположить, что должна быть какая-то ненормативной особый характер там где-то, что вызывает тревогу. Как я могу проверить это предположение и исправить его, или что-то еще не так?
Обратите внимание, что сам jQuery не анализирует XML вообще - браузер делает это. – Pointy
@Pointy, хорошая точка. Это произошло в Chrome. Я пробовал в FireFox, и он разбирается нормально. Теперь, что я могу сделать? !! Arg! –