我的JavaScript的一個非常簡單的位試圖解析我從元數據的JPEG提取的XML:爲什麼XML看起來好的時候jquery的parseXML函數失敗了?
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 2012-02-16 16:40:56
@好點,好點。這在Chrome中失敗了。我嘗試了FireFox,它解析得很好。現在我該怎麼辦?精氨酸! – 2012-02-16 16:58:37