在本篇文章中,我们将报告如安在IE中运用ActiveX功用来接见并剖析XML文档,由此许可收集冲浪者支配它们。
网上冲浪
我们以一个规范的递次文档而最先,如表A所示。这一文档包含简朴的递次数据以供应收集冲浪者阅读之用。不单单议为了显现这些数据,我们还供应了一个简朴的用户界面,网上冲浪都可以运用这一界面来阅读XML文档。
表A: order.xml
<?xml version="1.0" ?> <Order> <Account>9900234</Account> <Item id="1"> <SKU>1234</SKU> <PRicePer>5.95</PricePer> <Quantity>100</Quantity> <Subtotal>595.00</Subtotal> <Description>Super Widget Clamp</Description> </Item> <Item id="2"> <SKU>6234</SKU> <PricePer>22.00</PricePer> <Quantity>10</Quantity> <Subtotal>220.00</Subtotal> <Description>Mighty Foobar Flange</Description> </Item> <Item id="3"> <SKU>9982</SKU> <PricePer>2.50</PricePer> <Quantity>1000</Quantity> <Subtotal>2500.00</Subtotal> <Description>Deluxe Doohickie</Description> </Item> <Item id="4"> <SKU>3256</SKU> <PricePer>389.00</PricePer> <Quantity>1</Quantity> <Subtotal>389.00</Subtotal> <Description>Muckalucket Bucket</Description> </Item> <NumberItems>1111</NumberItems> <Total>3704.00</Total> <OrderDate>07/07/2002</OrderDate> <OrderNumber>8876</OrderNumber> </Order>
我们运用一个收集表单以接见这一XML文档,这一表单将显现SKU,价钱,数目,各部份的小计,以及递次中的每一选项的形貌。我们的表单还包含向前和向后阅读选项的按钮。
网页的组成
网页的重要部份是在于表单,我们将运用一个表以易读的体式格局在屏幕上显现。下面是显现HTML表的代码片断:
<form> <table border="0"> <tr><td>SKU</td><td><input type="text" name="SKU"></td></tr> <tr><td>Price</td><td><input type="text" name="Price"></td></tr> <tr><td>Quantity</td><td><input type="text" name="Quantity"></td></tr> <tr><td>Total</td><td><input type="text" name="Total"></td></tr> <tr><td>Description</td><td><input type="text" name="Description"></td></tr> </table> <input type="button" value=" << " onClick="getDataPrev();"> <input type="button" value=" >> " onClick="getDataNext();"> </form>
请注意到,我们在表的下面包含了两个按钮,即经由过程getDataNext() 和getDataPrev()函数来阅读前一个和后一个的纪录,这也是我们所要议论的题目。
剧本
实在,我们网页的本质部份不是在于表单,而是在于掌握表单的剧本。在我们的剧本中包含四个部份。起首,我们经由过程载入XML文档而初始化网页。第二部份是导航到下一个纪录。第三步是导航到前一个纪录。第四部份是从XML文档中提取单一的值。表B显现了我们的网页的全部内容。
表B: jsxml.html
<html> <head> <script language="javaScript"> <!-- vari = -1; varorderDoc = new ActiveXObject("MSXML2.DOMDocument.3.0"); orderDoc.load("order.xml"); var items = orderDoc.selectNodes("/Order/Item"); function getNode(doc, xpath) { varretval = ""; var value = doc.selectSingleNode(xpath); if (value) retval = value.text; return retval; } function getDataNext() { i++; if (i > items.length - 1) i = 0; document.forms[0].SKU.value = getNode(orderDoc, "/Order/Item[" + i + "]/SKU"); document.forms[0].Price.value = getNode(orderDoc, "/Order/Item[" + i + "]/PricePer"); document.forms[0].Quantity.value = getNode(orderDoc, "/Order/Item[" + i + "]/Quantity"); document.forms[0].Total.value = getNode(orderDoc, "/Order/Item[" + i + "]/Subtotal"); document.forms[0].Description.value = getNode(orderDoc, "/Order/Item[" + i + "]/Description"); } function getDataPrev() { i--; if (i < 0) i = items.length - 1; document.forms[0].SKU.value = getNode(orderDoc, "/Order/Item[" + i + "]/SKU"); document.forms[0].Price.value = getNode(orderDoc, "/Order/Item[" + i + "]/PricePer"); document.forms[0].Quantity.value = getNode(orderDoc, "/Order/Item[" + i + "]/Quantity"); document.forms[0].Total.value = getNode(orderDoc, "/Order/Item[" + i + "]/Subtotal"); document.forms[0].Description.value = getNode(orderDoc, "/Order/Item[" + i + "]/Description"); } // --> </script> </head> <body onload="getDataNext()"> <h2>XML Order Database</h2> <form> <table border="0"> <tr><td>SKU</td><td><input type="text" name="SKU"></td></tr> <tr><td>Price</td><td><input type="text" name="Price"></td></tr> <tr><td>Quantity</td><td><input type="text" name="Quantity"></td></tr> <tr><td>Total</td><td><input type="text" name="Total"></td></tr> <tr><td>Description</td><td><input type="text" name="Description"></td></tr> </table> <input type="button" value=" << " onClick="getDataPrev();"> <input type="button" value=" >> " onClick="getDataNext();"> </form> </body> </html>
运转
这一网页将传入并运转剧本的初始化。你肯定确保order.xml文档与jsxml.html在雷同的雷同的途径上。
初始化部份将一个新的ActiveX对象例示为MSXML2.DOMDocument.3.0对象范例,然后剧本传入order.xml文档到内存中,并挑选一切的/Order/Item节点。我们运用/Order/Item节点以辨认文档已包含的选项。
文档中的<body>规范有一个onLoad属性,这一属性可以使得网页挪用getDataNext()而初始化。这一功用可用于从XML文档中取得下一个值并显现在表单中。我们运用一个简朴的索引来接见特定的选项。
向前(>>)和向后(<<)按钮都运用雷同的机制。起首相应onClick事宜而挪用getDataNext() 或许getDataPrev(),这两个函数运用了逻辑要领以防止文档之外的局限接见我们的纪录。
以上就是运用JavaScript接见XML数据的内容,更多相关内容请关注ki4网(www.ki4.cn)!