Ich debugge den folgenden Code eines größeren Systems, das nicht von mir geschrieben wird. Es gibt XML, das von einem Server über AJAX kommt, das nicht richtig geparst wird. Im Folgenden wird das Problem erläutert.Internet Explorer XML-Parsing falsch bei Hypen und kann keine Repro Beispiel machen
Beachten Sie die Bindestriche - der Internet Explorer fügt sie ein, wenn es einen in einem CDATA-Teil gibt.
Wenn ich
zum Beispiel druckenconsole.log(a.item(4).childNodes.item(0));
ich
`{"INCD":"30362790021","sycd":"BKJ2`
das Problem zu debuggen, ich versuche, ein minimales Beispiel zu erstellen.
habe ich die Variable source
kopiert (durch einen Haltepunkt mit der Bedingung Einstellung .ocmmand == ‚List_detail‘) auf eine einfache Datei HTML Javascript wie folgt:
<script>
var source = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE primrose SYSTEM \"dtd/primrose.dtd\">\n<primrose><array type=\"string\"> .... </primrose>";
var xml = new DOMParser().parseFromString(source, 'text/xml');
var a = xml.documentElement.childNodes;
console.log(a);
console.log(a.item(4).childNodes.item(0));
</script>
Das Beispiel in voller Länge bei http://pastebin.com/GaHdjiWW ist
Aber das scheint ganz gut zu funktionieren:
Wenn ich console.log(a.item(4).childNodes.item(0));
laufen bekomme ich
{"INCD":"30362790021","sycd":"BKJ2-2","type_code":"00000050555","type_name":"BKJ","series_code":"110302280810","web_product_id":"10302280810","series_name":"Cross Recessed Pan Head Screws","disp_brandName":"MISUMI","brd_code":"MSM1","ecal_brd_code":"MSM","main_photo":"MSM1/PHOTO/10302280810.jpg","catch_copy":null,"cad_2d":"1","cad_2d_type":"1","cad_3d":"1","cad_3d_type":"2","scene7_img_product":[{"img_fileName":"110302280810_20149999_m_01_99999_jp","img_description":""}],"ary_displayLink":null,"ary_param_verify":"BKJ{2}\t{2}","ary_param_disp":"BKJ{2}\t{2}","param_conv_bef":null,"param_conv_bef_disp":null,"canOrder":"1"}
und so weiter ...
Internet Explorer Version ist 11.0.9600.18314
ich IE10, 11 CDATA with hyphens parsed wrong weiß und es scheint irgendwie ein Fehler zu sein, in IE. Aber warum kann ich es nicht im selben Browser reproduzieren?
Vielleicht gibt es ein seltsames UTF-8-Zeichen? – PiTheNumber