所有现代浏览器都内建了供读取和操作 XML 的 XML 解析器。
解析器把 XML 转换为 XML DOM 对象 - 可通过 JavaScript 操作的对象。JavaScript 访问的 XML DOM 对象。
解析 XML 文档 1 2 3 4 5 6 7 8 9 if (window .XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP" ); } xmlhttp.open("GET" , "books.xml" , false ); xmlhttp.send(); xmlDoc = xmlhttp.responseXML;
解析 XML 字符串 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 txt = "<bookstore><book>" ; txt = txt + "<title>Everyday Italian</title>" ; txt = txt + "<author>Giada De Laurentiis</author>" ; txt = txt + "<year>2005</year>" ; txt = txt + "</book></bookstore>" ; if (window .DOMParser) { parser = new DOMParser(); xmlDoc = parser.parseFromString(txt, "text/xml" ); } else { xmlDoc = new ActiveXObject("Microsoft.XMLDOM" ); xmlDoc.async = "false" ; xmlDoc.loadXML(txt); }
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body onload="displayCD()"> <div id="showCD"> </div> <input type="button" onclick="previous()" value="<<"> <input type="button" onclick="next()" value=">>"> <script> if (window.XMLHttpRequest) { var xmlhttp = new XMLHttpRequest(); } else { var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET", "/xml/aqing.xml", false); xmlhttp.send(); var xmlDoc = xmlhttp.responseXML; //xmlDoc 成为一个 XML DOM 对象,可由 JavaScript 访问。 x = xmlDoc.getElementsByTagName("CD"); i = 0; function displayCD() { a = (x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); aa = (x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue); aaa = (x[i].getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue); aaa = (x[i].getElementsByTagName("PRICE")[0].childNodes[0].nodeValue); aaaa = (x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue); text = "ARTIST :" + a + "<br>COUNTRY :" + aa + "<br>COMPANY :" + aaa + "<br>PRICE :" + aaaa; document.getElementById("showCD").innerHTML = text; } function previous() { if (i > 0) { i--; displayCD(); } } function next() { if (i < x.length - 1) { i++; displayCD(); } } </script> </body> </html>
XML文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 <CATALOG> <CD > <TITLE > Empire Burlesque</TITLE > <ARTIST > Bob Dylan</ARTIST > <COUNTRY > USA</COUNTRY > <COMPANY > Columbia</COMPANY > <PRICE > 10.90</PRICE > <YEAR > 1985</YEAR > </CD > <CD > <TITLE > Hide your heart</TITLE > <ARTIST > Bonnie Tyler</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > CBS Records</COMPANY > <PRICE > 9.90</PRICE > <YEAR > 1988</YEAR > </CD > <CD > <TITLE > Greatest Hits</TITLE > <ARTIST > Dolly Parton</ARTIST > <COUNTRY > USA</COUNTRY > <COMPANY > RCA</COMPANY > <PRICE > 9.90</PRICE > <YEAR > 1982</YEAR > </CD > <CD > <TITLE > Still got the blues</TITLE > <ARTIST > Gary Moore</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > Virgin records</COMPANY > <PRICE > 10.20</PRICE > <YEAR > 1990</YEAR > </CD > <CD > <TITLE > Eros</TITLE > <ARTIST > Eros Ramazzotti</ARTIST > <COUNTRY > EU</COUNTRY > <COMPANY > BMG</COMPANY > <PRICE > 9.90</PRICE > <YEAR > 1997</YEAR > </CD > <CD > <TITLE > One night only</TITLE > <ARTIST > Bee Gees</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > Polydor</COMPANY > <PRICE > 10.90</PRICE > <YEAR > 1998</YEAR > </CD > <CD > <TITLE > Sylvias Mother</TITLE > <ARTIST > Dr.Hook</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > CBS</COMPANY > <PRICE > 8.10</PRICE > <YEAR > 1973</YEAR > </CD > <CD > <TITLE > Maggie May</TITLE > <ARTIST > Rod Stewart</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > Pickwick</COMPANY > <PRICE > 8.50</PRICE > <YEAR > 1990</YEAR > </CD > <CD > <TITLE > Romanza</TITLE > <ARTIST > Andrea Bocelli</ARTIST > <COUNTRY > EU</COUNTRY > <COMPANY > Polydor</COMPANY > <PRICE > 10.80</PRICE > <YEAR > 1996</YEAR > </CD > <CD > <TITLE > When a man loves a woman</TITLE > <ARTIST > Percy Sledge</ARTIST > <COUNTRY > USA</COUNTRY > <COMPANY > Atlantic</COMPANY > <PRICE > 8.70</PRICE > <YEAR > 1987</YEAR > </CD > <CD > <TITLE > Black angel</TITLE > <ARTIST > Savage Rose</ARTIST > <COUNTRY > EU</COUNTRY > <COMPANY > Mega</COMPANY > <PRICE > 10.90</PRICE > <YEAR > 1995</YEAR > </CD > <CD > <TITLE > 1999 Grammy Nominees</TITLE > <ARTIST > Many</ARTIST > <COUNTRY > USA</COUNTRY > <COMPANY > Grammy</COMPANY > <PRICE > 10.20</PRICE > <YEAR > 1999</YEAR > </CD > <CD > <TITLE > For the good times</TITLE > <ARTIST > Kenny Rogers</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > Mucik Master</COMPANY > <PRICE > 8.70</PRICE > <YEAR > 1995</YEAR > </CD > <CD > <TITLE > Big Willie style</TITLE > <ARTIST > Will Smith</ARTIST > <COUNTRY > USA</COUNTRY > <COMPANY > Columbia</COMPANY > <PRICE > 9.90</PRICE > <YEAR > 1997</YEAR > </CD > <CD > <TITLE > Tupelo Honey</TITLE > <ARTIST > Van Morrison</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > Polydor</COMPANY > <PRICE > 8.20</PRICE > <YEAR > 1971</YEAR > </CD > <CD > <TITLE > The very best of</TITLE > <ARTIST > Cat Stevens</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > Island</COMPANY > <PRICE > 8.90</PRICE > <YEAR > 1990</YEAR > </CD > <CD > <TITLE > Stop</TITLE > <ARTIST > Sam Brown</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > A and M</COMPANY > <PRICE > 8.90</PRICE > <YEAR > 1988</YEAR > </CD > <CD > <TITLE > Bridge of Spies</TITLE > <ARTIST > T'Pau</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > Siren</COMPANY > <PRICE > 7.90</PRICE > <YEAR > 1987</YEAR > </CD > <CD > <TITLE > Private Dancer</TITLE > <ARTIST > Tina Turner</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > Capitol</COMPANY > <PRICE > 8.90</PRICE > <YEAR > 1983</YEAR > </CD > <CD > <TITLE > Midt om natten</TITLE > <ARTIST > Kim Larsen</ARTIST > <COUNTRY > EU</COUNTRY > <COMPANY > Medley</COMPANY > <PRICE > 7.80</PRICE > <YEAR > 1983</YEAR > </CD > <CD > <TITLE > Pavarotti Gala Concert</TITLE > <ARTIST > Luciano Pavarotti</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > DECCA</COMPANY > <PRICE > 9.90</PRICE > <YEAR > 1991</YEAR > </CD > <CD > <TITLE > The dock of the bay</TITLE > <ARTIST > Otis Redding</ARTIST > <COUNTRY > USA</COUNTRY > <COMPANY > Atlantic</COMPANY > <PRICE > 7.90</PRICE > <YEAR > 1987</YEAR > </CD > <CD > <TITLE > Picture book</TITLE > <ARTIST > Simply Red</ARTIST > <COUNTRY > EU</COUNTRY > <COMPANY > Elektra</COMPANY > <PRICE > 7.20</PRICE > <YEAR > 1985</YEAR > </CD > <CD > <TITLE > Red</TITLE > <ARTIST > The Communards</ARTIST > <COUNTRY > UK</COUNTRY > <COMPANY > London</COMPANY > <PRICE > 7.80</PRICE > <YEAR > 1987</YEAR > </CD > <CD > <TITLE > Unchain my heart</TITLE > <ARTIST > Joe Cocker</ARTIST > <COUNTRY > USA</COUNTRY > <COMPANY > EMI</COMPANY > <PRICE > 8.20</PRICE > <YEAR > 1987</YEAR > </CD > </CATALOG>