ÍøÂçѧԺ w3popÉçÇø ÍøÂç×ÊÔ´ ITÐÂÎÅ

w3pop.com :: ÍøÂçѧԺ :: XML :: IEºÍ»ðºü¶ÁÈ¡XML·½·¨±È½Ï

»áÔ±µÇ½

ÕʺÅ

ÃÜÂë

»Ø´ð

¼ÇסÃÜÂë

Íü¼ÇÃÜÂë? ×¢²á

XML
XML ½éÉÜ
XML µÄÓÃ;
XML Óï·¨¹æÔò
XML ÔªËØ
XML ÊôÐÔ
XML µÄÓÐЧÐÔÑéÖ¤
XML УÑéÆ÷
Ö§³Ö XML µÄä¯ÀÀÆ..
ä¯ÀÀ XML Îļþ
Óà CSS ÏÔʾ XML
Óà XSL ÏÔʾ XML
XML Êý¾Ýµº
XML ½âÎöÆ÷
ÏÖʵÖÐµÄ XML
XML ÃüÃû¿Õ¼ä
XML CDATA
XML ·þÎñÆ÷
XML Ó¦ÓóÌÐò
XMLHttpRequest ¶..
XML ±£´æÊý¾Ý

IEºÍ»ðºü¶ÁÈ¡XML·½·¨±È½Ï


×÷Õß:w3pop.com ·­Òë/ÕûÀí:w3pop.com ·¢²¼:2008-05-28 ä¯ÀÀ:1707 :: ::

Ò»¡¢IE¶ÁÈ¡XML
 var xmlDoc;  
  xmlDoc = new ActiveXObject( "Msxml2.DOMDocument" );
  xmlDoc.loadXML(xml);

//È¡µÄ½Úµã
 var points = xmlDoc.documentElement.getElementsByTagName("point");

//È¡µÃ½ÚµãµÄÄÚÈÝÖµ
 pointsIdea [I].childNodes[1].text

¶þ¡¢firefox¶ÁÈ¡XML

FirefoxÖд´½¨Ò»¸öXML DOM£¬ÐèÒªµ÷ÓÃdocument.implementation¶ÔÏóµÄcreateDocument()·½·¨¡£¸Ã·½·¨½ÓÊÜÈý¸ö²ÎÊý£ºµÚÒ»¸ö²ÎÊýÊǰüº¬ÎĵµËùʹÓõÄÃüÃû¿Õ¼äURIµÄ×Ö·û´®£»µÚ¶þ¸ö²ÎÊýÊǰüº¬Îĵµ¸ùÔªËØÃû³ÆµÄ×Ö·û´®£»µÚÈý¸ö²ÎÊýÊÇÒª´´½¨µÄÎĵµÀàÐÍ£¨Ò²³ÆÎªdoctype£©¡£Èç¹ûÒª´´½¨¿ÕµÄDOMÎĵµ£¬Ôò´úÂëÈçÏÂËùʾ£º

var oXmlDom = document.implementation.createDocument("", "", null);

ǰÁ½¸ö²ÎÊýÊÇ¿Õ×Ö·û´®£¬µÚÈý¸ö²ÎÊýΪnull£¬ÕâÑù¿ÉÒÔÈ·±£Éú³ÉÒ»¸ö³¹µ×µÄ¿ÕÎĵµ¡£ÊÂʵÉÏ£¬ÏÖÔÚFirefoxÖв¢²»ÌṩÕë¶ÔÎĵµÀàÐ͵ÄJavaScriptÖ§³Ö£¬ËùÒÔµÚÈý¸ö²ÎÊý×ÜÊÇΪnull¡£Èç¹ûÒª´´½¨°üº¬ÎĵµÔªËصÄXML DOM£¬ÄÇô¿ÉÒÔÔÚµÚ¶þ¸ö²ÎÊýÖÐÖ¸¶¨±êÇ©Ãû³Æ£º

var oXmlDom = document.implementation.createDocument("", "books", null);

Õâ¶Î´úÂë´´½¨ÁËÒ»¸öXML DOM£¬ÆädocumentElementÊÇ<books/>¡£Èç¹ûÒª´´½¨°üº¬Ö¸¶¨ÃüÃû¿Õ¼äµÄDOM£¬¿ÉÒÔÔÚµÚÒ»¸ö²ÎÊýÖÐÖ¸¶¨ÃüÃû¿Õ¼äURI£º

var oXmlDom = document.implementation.createDocument("http://www.site1.com",

       "books", null);

µ±ÔÚcreateDocument()·½·¨ÖÐÖ¸¶¨ÃüÃû¿Õ¼äʱ£¬ Firefox»á×Ô¶¯¸½ÉÏǰ׺a0ÒÔ±íʾÃüÃû¿Õ¼äURI£º

<a0:books xmlns:a0="http://www.site1.com" />

½Ó×Å£¬Äã¿ÉÒÔͨ¹ý³ÌÐòÀ´Ìî³äXMLÎĵµ£¬²»¹ýÔÚÒ»°ãÇé¿öÏ£¬»¹ÐèÒªÔÚ¿ÕµÄXML DOM¶ÔÏóÖÐÔØÈëÏÖÓеÄXMLÎĵµ¡£

1. ÔÚFirefoxÖÐÔØÈëXMLÊý¾Ý

ÔÚFirefoxÖУ¬½«XMLÔØÈëXML DOMµÄ·½·¨ºÍ΢Èí²ÉÓõķ½·¨´óÖÂÏàͬ£¬Ö»´æÔÚÒ»¸öÏÔÖøÇø±ð£ºFirefoxÖ»Ö§³Öload()·½·¨¡£Òò´Ë£¬ÔÚÕâÁ½ÖÖä¯ÀÀÆ÷ÖÐÔØÈëÍⲿXMLÊý¾ÝµÄ´úÂëÊÇÏàͬµÄ£º

oXmlDom.load("books.xml");

Óë΢ÈíµÄIEÒ»Ñù£¬FirefoxͬÑùʵÏÖÁËasyncÊôÐÔ£¬¸ÃÊôÐÔµÄÐÐΪҲÓëÆäÒ»Ö£º½«asyncÉèÖÃΪfalse£¬±íʾÒÔͬ²½Ä£Ê½ÔØÈëÎĵµ£»·ñÔò£¬ÒÔÒì²½Ä£Ê½ÔØÈëÎĵµ¡£

FirefoxµÄXML DOMʵÏÖºÍ΢ÈíµÄXML DOMʵÏÖ»¹´æÔÚÁíÒ»¸ö²»Í¬£¬¼´Firefox²»Ö§³ÖreadyStateÊôÐÔ¼°onreadystatechangeʼþ´¦Àíº¯Êý¡£ÔÚFirefoxÖУ¬Ö§³ÖloadʼþºÍonloadʼþ´¦Àíº¯Êý¡£ÔÚÎĵµÍêÈ«ÔØÈëºó½«´¥·¢loadʼþ£º

oXmlDom.load("books.xml");

oXmlDom.onload = function () {

    //ÎĵµÍêÈ«ÔØÈëºóµÄ²Ù×÷

};

ÕýÈçÇ°ÃæËù˵£¬ÔÚFirefoxµÄXML DOMʵÏÖÖУ¬²¢Ã»ÓÐloadXML()·½·¨£¬²»¹ýͨ¹ýFirefoxÖеÄDOMParserÀà¿ÉÒÔÄ£ÄâloadXML()µÄÐÐΪ¡£¸ÃÀàÓÐÒ»¸öÃûΪparseFromString()µÄ·½·¨£¬ÓÃÀ´ÔØÈë×Ö·û´®²¢½âÎö³ÉÎĵµ£º

var sXml = "<root><person><name>Jeremy McPeak</name></person></root>";

var oParser = new DOMParser();

var oXmlDom = oParser.parseFromString(sXml,"text/xml");

ÔÚÕâ¶Î´úÂëÖУ¬´´½¨ÁËÒ»¸öXML×Ö·û´®£¬²¢×÷Ϊ²ÎÊý´«µÝ¸øDOMParserµÄparseFromString()·½·¨¡£parseFromString()·½·¨µÄÁ½¸ö²ÎÊý·Ö±ðÊÇXML×Ö·û´®ºÍÊý¾ÝµÄÄÚÈÝÀàÐÍ£¨Ò»°ãÉèÖÃΪtext/xml)¡£parseFromString()·½·¨·µ»ØXML DOM¶ÔÏó£¬Òò´ËÕâÀïµÃµ½µÄoXmlDomÓëµÚÒ»¸öÀý×ÓÏàͬ¡£

2. ÔÚFirefoxÖлñÈ¡XMLÊý¾Ý

¾¡¹Ü´æÔÚÕâÑùÄÇÑùµÄ²»Í¬£¬µ«IEºÍFirefoxÖÐÓÃÓÚ»ñÈ¡ÎĵµÖÐXMLÊý¾ÝµÄ´ó¶àÊýÊôÐԺͷ½·¨ÊÇÒ»Öµġ£ÕýÈçÔÚIEÖУ¬¿ÉÒÔʹÓÃdocumentElementÊôÐÔÀ´»ñÈ¡ÎĵµµÄ¸ùÔªËØ£¬ÀýÈ磺

var oRoot = oXmlDom.documentElement;

FirefoxͬÑùÖ§³ÖW3C±ê×¼ÊôÐÔ£¬°üÀ¨childNodes¡¢firstChild¡¢lastChild¡¢nextSibling¡¢nodeName¡¢nodeType¡¢nodeValue¡¢ownerDocument¡¢parentNodeºÍpreviousSibling¡£²»ÐÒµÄÊÇ£¬¶ÔÓÚ΢ÈíרÓеÄtextºÍxmlÊôÐÔ£¬Firefox²¢²»Ö§³Ö£¬²»¹ý¿ÉÒÔÀûÓÃÆäËû·½·¨À´Ä£Äâ¸ÃÊôÐÔµÄÐÐΪ¡£

´ó¼ÒÓ¦¸Ã»¹¼ÇµÃ£¬textÊôÐÔ·µ»ØÁ˵±Ç°½ÚµãµÄÄÚÈÝ£¬»òÕßÊǵ±Ç°½Úµã¼°Æä×Ó½ÚµãµÄÄÚÈÝ¡£Õâ²»½ö½ö·µ»Øµ±Ç°½ÚµãµÄÎı¾£¬»¹ÓÐËùÓÐ×Ó½ÚµãµÄÎı¾£¬Òò´ËҪģÄâ¸Ã¹¦ÄÜʵÏÖÊÇÊ®·ÖÈÝÒ׵ġ£ÏÂÃæÕâ¸ö¼òµ¥µÄº¯Êý¾ÍÄܹ»Íê³É¸Ã¹¦ÄÜ£¬¸Ãº¯ÊýΨһµÄ²ÎÊýÊÇÒ»¸ö½Úµã£º

function getText(oNode) {

    var sText = "";

    for (var i = 0; i < oNode.childNodes.length; i++) {

       if (oNode.childNodesIdea [I].hasChildNodes()) {

           sText += getText(oNode.childNodesIdea [I]);

       } else {

           sText += oNode.childNodesIdea [I].nodeValue;

       }

    }

    return sText;

}

ÔÚgetText()º¯ÊýÖУ¬sText±äÁ¿ÓÃÀ´±£´æ»ñÈ¡µÄËùÓÐÎı¾¡£½Ó×ŶÔoNodeµÄ×Ó½ÚµãʹÓÃforÑ­»·½øÐбéÀú£¬¼ì²éÿ¸ö×Ó½ÚµãÊÇ·ñ°üº¬×ӽڵ㡣Èç¹ûÓÐ×ӽڵ㣬ÄÇô¾Í½«ÆächildNode´«¸øgetText()º¯Êý£¬²¢½øÐÐͬÑùµÄ´¦Àí£»Èç¹ûûÓÐ×ӽڵ㣬ÄÇô½«µ±Ç°½ÚµãµÄnodeValue¼Óµ½×Ö·û´®ÖУ¨¶ÔÎı¾½Úµã¶øÑÔ£¬ÕâÖ»ÊÇÎı¾×Ö·û´®£©¡£´¦ÀíÁËËùÓÐ×Ó½Úµãºó£¬¸Ãº¯Êý·µ»Ø±äÁ¿sText¡£

IEÖеÄxmlÊôÐÔ½«´æ·Å¶Ôµ±Ç°½Úµã°üº¬µÄËùÓÐXML½øÐÐÐòÁл¯µÄ½á¹û¡£ÔÚFirefoxÖУ¬ÌṩÁËÒ»¸öÃûΪXMLSerializer¶ÔÏóÀ´Íê³ÉÕâÒ»¹¦ÄÜ¡£¸Ã¶ÔÏóÌṩһ¸öʹÓÃJavaScript¿É·ÃÎʵÄserializeToString()·½·¨£¬Ê¹Óø÷½·¨¿ÉÒÔ¶ÔXMLÊý¾Ý½øÐÐÐòÁл¯¡£

function serializeXml(oNode) {

    var oSerializer = new XMLSerializer();

    return oSerializer.serializeToString(oNode);

}

serializeXml()º¯ÊýÒÔXML½Úµã×÷Ϊ²ÎÊý£¬´´½¨Ò»¸öXMLSerializer¶ÔÏ󣬲¢½«¸Ã½Úµã´«¸øserializeToString()·½·¨¡£¸Ã·½·¨½«Ïòµ÷ÓÃÕß·µ»ØXMLÊý¾ÝµÄ×Ö·û´®±íʾ¡£

¶ÔÓÚ½Úµã²Ù×÷µÄDOM·½·¨£¬FirefoxÓëIE´óÖÂÏàͬ¡£²Î¼û“ÔÚIEÖвÙ×÷DOM”С½Ú¡£

3. ÔÚFirefoxÖд¦Àí´íÎó

FirefoxÓëIEµÄ´íÎó´¦Àí²¢²»Ò»Ñù¡£µ±IEÓöµ½´íÎóʱ£¬Ëü»áÌî³äparseError¶ÔÏó£»¶øµ±FirefoxÓöµ½´íÎóʱ£¬Ëü»á½«°üº¬´íÎóÐÅÏ¢µÄXMLÎĵµÔØÈëµ½XML DOMÎĵµÖС£¿´ÏÂÃæµÄÕâ¸öÀý×Ó£º

var sXml = "<root><person><name>Jeremy McPeak</name></root>";

var oParser = new DOMParser();

var oXmlDom = oParser.parseFromString(sXml,"text/xml");

 

if (oXmlDom.documentElement.tagName != "parsererror") {

    //ûÓдíÎó·¢Éú£¬½øÐÐËùÐè²Ù×÷

} else {

    alert("An Error Occurred");

}

ÔÚÍ»³öÏÔʾµÄ´úÂëÐÐÖУ¬Äã»á·¢ÏÖÆäÖн«²úÉúÒ»¸ö´íÎó£ºXML×Ö·û´®¸ñʽ²»ÕýÈ·£¨ÒòΪ<person>ÔªËØ²»ÍêÕû£¬Ã»ÓÐÏàÓ¦µÄ</person>ÔªËØ£©¡£µ±ÔØÈë´íÎóµÄXMLʱ£¬XML DOM¶ÔÏ󽫻áÔØÈëÒ»¸ödocumentElementΪ<parsererror/>µÄ´íÎóÎĵµ¡£ÎÒÃÇ¿ÉÒÔͨ¹ý¼ì²édocumentElementµÄtagNameÊôÐÔÀ´ºÜÈÝÒ×µØÈ·¶¨ÊÇ·ñ·¢Éú´íÎó¡£Èç¹ûtagNameÊôÐÔ²»ÊÇparsererror£¬¾Í¿ÉÒÔÈ·¶¨Ã»Óз¢ÉúÈκδíÎó¡£

ÔÚ±¾ÀýÖУ¬¿ÉÄÜ»áÉú³ÉÈçÏÂËùʾµÄ´íÎóÎĵµ£º

<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">XML

Parsing Error: mismatched tag. Expected: </person>.

Location: http://yoda/fooreader/test.htm

Line Number 1, Column 43:<sourcetext><root><person><name>Jeremy

McPeak</name></root>

------------------------------------------^</sourcetext></parsererror>

ËùÓеĴíÎóÐÅÏ¢¶¼°üº¬ÔÚ´íÎóÎĵµµÄÎı¾ÖС£Èç¹ûҪͨ¹ý³ÌÐòʹÓÃÕâЩ´íÎóÐÅÏ¢£¬ÄÇôÊ×ÏȾÍÒª¶ÔÆä½øÐнâÎö¡£×î¼òµ¥µÄ·½·¨ÊÇʹÓÃÒ»¸öÉÔ³¤µÄÕýÔò±í´ïʽ£º

var reError = />([\s\S]*?)Location:([\s\S]*?)Line Number (\d+), Column

    (\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/;

¸ÃÕýÔò±í´ïʽ½«´íÎóÎĵµ·ÖΪÎå¸ö²¿·Ö£º´íÎóÏûÏ¢¡¢·¢Éú´íÎóµÄÎļþÃû¡¢Ðкš¢¸ÃÐÐÖз¢Éú´íÎóµÄλÖã¬ÒÔ¼°·¢Éú´íÎóµÄÔ´´úÂ롣ʹÓÃÕýÔò±í´ïʽ¶ÔÏóµÄtest()·½·¨¿ÉÒÔʹÓÃÕâЩÐÅÏ¢£º

if (oXmlDom.firstChild.tagName != "parsererror") {

    //ûÓдíÎó·¢Éú£¬½øÐÐËùÐè²Ù×÷

} else {

    var oXmlSerializer = new XMLSerializer();

    var sXmlError = oXmlSerializer.serializeToString(oXmlDom);

    var reError = />([\s\S]*?)Location:([\s\S]*?)Line Number (\d+), Column

       (\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/;

    reError.test(sXmlError);

ÕýÔò±í´ïʽ²¶»ñµ½µÄµÚÒ»²¿·ÖÊý¾ÝÊÇ´íÎóÏûÏ¢£¬µÚ¶þ²¿·ÖÊÇÎļþÃû£¬µÚÈý²¿·ÖÊÇÐкţ¬µÚËIJ¿·ÖÊÇÐÐÄÚλÖ㬵ÚÎ岿·ÖÊÇÔ´Âë¡£Äã¿ÉÒÔʹÓÃÕâЩ½âÎöºóµÄÐÅÏ¢À´´´½¨×Ô¶¨ÒåµÄ´íÎóÏûÏ¢£º

var str = "An error occurred!! " +

    "Description: " + RegExp.$1 + " " +

    "File: " + RegExp.$2 + " " +

    "Line: " + RegExp.$3 + " " +

    "Line Position: " + RegExp.$4 + " " +

    "Source Code: " + RegExp.$5;

alert(str);

Èç¹û·¢Éú´íÎó£¬ÄÇôalert()·½·¨»áÒÔÒ×ÓÚÔĶÁµÄ¸ñʽÔÚ¾¯¸æ¿òÖÐÀ´ÏÔʾÏà¹ØµÄ´íÎóÐÅÏ¢¡£

ÆÀÂÛ (0) All