时间: 2021-07-31 作者:daque
在搜集欣赏器软硬件中,不妨internet explorer (ie)此刻是一种规范的软硬件。不妨看到,运转各别本子的windows操纵体例(和很多其余的操纵体例)的每一台呆板简直都运用ie。微软仍旧经过activex控件将ie的功效包括在实行老练的xml处置本领中。
在本篇作品中,咱们将报告怎样在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(),这两个因变量运用了论理本领以制止文书档案除外的范畴考察咱们的记载。
----------------------------------------------------------------
正文作家brian schaffner是富士通接洽公司的副主任。他为富士通的本领接洽公司供给框架结构、安排和开拓扶助。