私はJPEGのメタデータから抽出してきたXMLを解析しようとしたJavaScriptのかなり単純なビットがあります。ここでは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);
}
私が唯一の問題を引き起こしているどこかで印刷できない特殊文字のいくつかの種類が存在しなければならないと仮定することができます。その仮定をテストして修正するにはどうすればよいですか、それとも何か他のものが間違っていますか?このウェブサイトhttp://www.xmlvalidation.comを使用することにより
jQuery自体はXMLをまったく解析しないことに注意してください。ブラウザはそうします。 – Pointy
@Pointy、良い点。これはChromeで失敗していました。私はFireFoxで試して、それは大丈夫です。今何ができますか? Arg! –