½âÎö XML DOM
´ó¶àÊýä¯ÀÀÆ÷¶¼ÄÚ½¨Á˹©¶ÁÈ¡ºÍ²Ù×÷ XML µÄ XML ½âÎöÆ÷¡£
½âÎöÆ÷°Ñ XML ת»»Îª JavaScript ¿É´æÈ¡µÄ¶ÔÏó¡£
ʵÀý
W3School ÌṩµÄʵÀý¶ÀÁ¢ÓÚä¯ÀÀÆ÷ºÍƽ̨¡£ÕâЩʵÀý¿ÉÔÚËùÓÐÏÖ´úä¯ÀÀÆ÷ÖÐÔËÐС£
½âÎö XML
ËùÓÐÏÖ´úä¯ÀÀÆ÷¶¼ÄÚ½¨ÁËÓÃÓÚ¶ÁÈ¡ºÍ²Ù×÷ XML µÄ XML ½âÎöÆ÷¡£
½âÎöÆ÷°Ñ XML ¶ÁÈëÄڴ棬²¢°ÑËüת»»Îª¿É±» JavaScript ·ÃÎ浀 XML DOM ¶ÔÏó¡£
΢ÈíµÄ XML ½âÎöÆ÷ÓëÆäËûä¯ÀÀÆ÷ÖеĽâÎöÆ÷ÊÇÓвîÒìµÄ¡£Î¢ÈíµÄ½âÎöÆ÷Ö§³Ö¶Ô XML ÎļþºÍ XML ×Ö·û´®£¨Îı¾£©µÄ¼ÓÔØ£¬¶øÆäËûä¯ÀÀÆ÷ʹÓõ¥¶ÀµÄ½âÎöÆ÷¡£²»¹ý£¬ËùÓеĽâÎöÆ÷¶¼º¬ÓбéÀú XML Ê÷¡¢·ÃÎÊ¡¢²åÈ뼰ɾ³ý½ÚµãµÄº¯Êý¡£
ÔÚ±¾½Ì³ÌÖУ¬ÎÒÃǽ«ÎªÄú½²½âÈçºÎ´´½¨¿ÉÔÚ IE ¼°ÆäËûä¯ÀÀÆ÷ÖÐÔËÐеĽű¾¡£
ͨ¹ý΢ÈíµÄ XML ½âÎöÆ÷¼ÓÔØ XML
΢ÈíµÄ XML ½âÎöÆ÷ÄÚ½¨ÓÚ Internet Explorer 5 ¼°¸ü¸ß°æ±¾ÖС£
ÏÂÃæµÄ JavaScript Ƭ¶Î°Ñ XML Îĵµ ("books.xml") ÔØÈëÁ˽âÎöÆ÷£º
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("books.xml");
´úÂë½âÊÍ£º
- µÚÒ»Ðд´½¨¿ÕµÄ΢Èí XML Îĵµ¶ÔÏó
- µÚ¶þÐйرÕÒì²½¼ÓÔØ£¬ÕâÑù¿ÉÈ·±£ÔÚÎĵµÍêÕû¼ÓÔØÖ®Ç°£¬½âÎöÆ÷²»»á¼ÌÐøÖ´Ðнű¾
- µÚÈýÐиæÖª½âÎöÆ÷¼ÓÔØÃûΪ "books.xml" µÄÎĵµ
ÏÂÃæµÄ JavaScript Ƭ¶Î°ÑÃûΪ txt µÄ×Ö·û´®ÔØÈë½âÎöÆ÷ÖУº
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(txt);
×¢ÊÍ£ºloadXML() ·½·¨ÓÃÓÚ¼ÓÔØ×Ö·û´®£¨Îı¾£©£¬¶ø load() ÓÃÓÚ¼ÓÔØÎļþ¡£
ÔÚ Firefox ¼°ÆäËûä¯ÀÀÆ÷ÖÐµÄ XML ½âÎöÆ÷
ÏÂÃæµÄ JavaScript Ƭ¶Î°Ñ XML Îĵµ ("books.xml") ÔØÈëÁ˽âÎöÆ÷£º
xmlDoc=document.implementation.createDocument("","",null); xmlDoc.async="false"; xmlDoc.load("books.xml");
´úÂë½âÊÍ£º
- µÚÒ»Ðд´½¨¿ÕµÄ XML Îĵµ¶ÔÏó
- µÚ¶þÐйرÕÒì²½¼ÓÔØ£¬ÕâÑù¿ÉÈ·±£ÔÚÎĵµÍêÕû¼ÓÔØÖ®Ç°£¬½âÎöÆ÷²»»á¼ÌÐøÖ´Ðнű¾
- µÚÈýÐиæÖª½âÎöÆ÷¼ÓÔØÃûΪ "books.xml" µÄÎĵµ
ÏÂÃæµÄ JavaScript Ƭ¶Î°ÑÃûΪ txt µÄ×Ö·û´®ÔØÈë½âÎöÆ÷ÖУº
parser=new DOMParser(); xmlDoc=parser.parseFromString(txt,"text/xml");
´úÂë½âÊÍ£º
- µÚÒ»Ðд´½¨Ò»¸ö¿ÕµÄ XML Îĵµ¶ÔÏó
- µÚ¶þÐиæÖª½âÎöÆ÷¼ÓÔØÃûΪ txt µÄ×Ö·û´®
×¢ÊÍ£ºInternet Explorer ʹÓà loadXML() ·½·¨À´½âÎö XML ×Ö·û´®£¬¶øÆäËûä¯ÀÀÆ÷ʹÓà DOMParser ¶ÔÏó¡£
½âÎö XML Îļþ - Ò»¸ö¿çä¯ÀÀÆ÷µÄʵÀý
ÏÂÃæµÄÀý×Ó°Ñ XML Îĵµ ("books.xml") ÔØÈë XML ½âÎöÆ÷£º
<html> <body> <script type="text/javascript"> try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } catch(e) { try //Firefox, Mozilla, Opera, etc. { xmlDoc=document.implementation.createDocument("","",null); } catch(e) {alert(e.message)} } try { xmlDoc.async=false; xmlDoc.load("books.xml"); document.write("xmlDoc is loaded, ready for use"); } catch(e) {alert(e.message)} </script> </body> </html>
Error: Access Across Domains
³öÓÚ°²È«·½ÃæµÄÔÒò£¬ÏÖ´úµÄä¯ÀÀÆ÷²»ÔÊÐí¿çÓòµÄ·ÃÎÊ¡£
ÕâÒâζ×Å£¬ÍøÒ³ÒÔ¼°ËüÊÔͼ¼ÓÔØµÄ XML Îļþ£¬¶¼±ØÐëλÓÚÏàͬµÄ·þÎñÆ÷ÉÏ¡£
W3School µÄʵÀýËù´ò¿ªµÄ XML ÎļþλÓÚ W3School µÄÓòÉÏ¡£
¼ÙÈçÄã´òËãÔÚ×Ô¼ºµÄÍøÒ³ÉÏʹÓÃÉÏÃæµÄÀý×Ó£¬Ôò±ØÐë°Ñ XML Îļþ·Åµ½×Ô¼ºµÄ·þÎñÆ÷ÉÏ¡£·ñÔò£¬xmlDoc.load() ½«²úÉú´íÎó "Access is denied"¡£
½âÎö XML ×Ö·û´® - Ò»¸ö¿çä¯ÀÀÆ÷µÄʵÀý
ÏÂÃæµÄ´úÂë¼ÓÔØ²¢½âÎöÁËÒ»¸ö XML ×Ö·û´®£º
<html> <body> <script type="text/javascript"> text="<bookstore>" text=text+"<book>"; text=text+"<title>Harry Potter</title>"; text=text+"<author>J K. Rowling</author>"; text=text+"<year>2005</year>"; text=text+"</book>"; text=text+"</bookstore>"; try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(text); } catch(e) { try //Firefox, Mozilla, Opera, etc. { parser=new DOMParser(); xmlDoc=parser.parseFromString(text,"text/xml"); } catch(e) {alert(e.message)} } document.write("xmlDoc is loaded, ready for use"); </script> </body> </html>
×¢ÊÍ£ºInternet Explorer ʹÓà loadXML() ·½·¨À´½âÎö XML ×Ö·û´®£¬¶øÆäËûä¯ÀÀÆ÷ʹÓà DOMParser ¶ÔÏó¡£