动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   Xml → 阅读文章

 XML使用其它方法来存取元素

作者来源: 
阅读 数 637 人次 , 2006-3-29 3:13:00 

到目前为止你所看到的范例script 程序中,都是借着浏览节点的阶层结构,利用childNodes 与firstChild 两个节点属性来从某节点往相邻节点移动。记住,你可以用类似的方法来使用lastChild、previousSibling、nextSibling 和parentNode 等节点属性。表格9-2 详细描述了这些节点属性。
注意
childNodes、firstChild 与lastChild 属性只准许你存取非属性的子节点,而previousSibling 与nextSibling 属性则让你可以存取任何形态的兄弟节点。
另一种存取XML 元素的方法,是使用getElementsByTagName 方法来撷取拥有特殊形态名称的所有元素(像TITLE)。这个方法在Document 节点(于表格9-3 中介绍)以及Element 节点(于表格9-6 中介绍)都可以使用。如果你为Document 节点呼叫这个方法,它会传回文件中所有拥有特定型态名称元素的Element 节点集合。例如,下面的程序代码会取得文件中所有为BOOK 形态元素的Element 节点集合:
NodeList =Document.getElementsByTagName("BOOK ");
如果呼叫Element 节点的getElementsByTagName 方法,如下面例子所示,则方法将传回所有符合条件的子Element 节点集合:
NodeList =Element.getElementsByTagName("AUTHOR ");
提示
如果你传入「*」值给getElementsByTagName 方法,其将传回所有元素的节点集合。(如果你呼叫的是Document 对象的方法,则其会传回文件中所有元素的集合;如果呼叫的是Element对象的方法,则其会传回所有后继元素的集合。)
Element 节点方法节点方法 描述 范例 getAttribute(attr-name) 传回拥有特定名称的Element 属性的属性值 AttValue =Element.getAttribute("InStock"); GetAttributeNode(attr-name) 传回代表拥有特定名称的Element 属性的Attribute 节点 Attribute=Element.getAttributeNode("InStock"); getElementsByTagName(type-name) 传回该元素中拥有特定型态的所有后继元素的Element节点的NodeList对象。.如果你传入参数值「*」时,方法将传回所有代表后继元素的节点 AuthorElementCollection=Element.getElementsByTagName("AUTHOR");
表格9-6 Element 节点所提供有用的方法。在Element 节点中你也可以使用表格9-2 中所列的共同节点属性。
getElementsByTagName 方法以NodeList 集合对象的形态,传回给Element 节点。因此你可以使用本章先前在<使用NodeList 对象>中讨论过的任何技术,来存取个别的节点。例如,下面的script 程序,将显示(藉由「alert」的讯息显示框)由getElementsByTagName 方法所传回的NodeList 对象中所有Element 节点的文字内容:
for (i=0;i <NodeList.length;++i)
alert (NodeList(i).text);
列表9-5 的HTML 网页显示了在Document 节点中使用getElements-ByTagName 方法的用法。(你可以在随书光盘中的GetElements.htm 档案中找到列表9-5。)该网页显示一个文字(TEXT)形态的输入(INPUT)控件,让你可以输入元素名称。当你按下 Show Elements 按钮时,script中的ShowElements 函式将在文件节点中使用getElementsByTagName 方法来搜寻,并显示文件中符合输入元素名称的所有元素XML 卷标的内容。注意,script 中使用每个Element 节点的xml 属性来显示元素的XML 卷标内容。网页一开始就被连结至文件Inventory.xml 中,虽然你可以编辑文件中的data island来显示其它XML文件中的元素。下图是在你输入AUTHOR到INPUT
控件并按下按钮时,Internet Explorer 5 显示该网页的情况。

GetElements.htm
<!--File Name:GetElements.htm -->
<HTML>
<HEAD>
<TITLE>Element Finder</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function ShowElements()
{
/*make sure user has entered text into the
'Element name' box::*/
if (ElementName.value =="")
{
ResultDiv.innerText ="<You must enter an
element"
+"name into 'Element name' box..>";
return;
}
/*get a NodeList collection of all matching Element
nodes in the document:*/
Document =dsoXML.XMLDocument;
NodeList =
Document.getElementsByTagName
(ElementName.value);
/*store the XML markup for each Element node
in ResultHTML:*/
ResultHTML ="";
for (i=0;i <NodeList.length;++i)
ResultHTML +=NodeList(i).xml +"\n \n";
/*assign the stored results to the innerText property
of the DIV:*/
if (ResultHTML =="")
ResultDiv.innerText ="<no matching elements
found>";
else
ResultDiv.innerText =ResultHTML;
}
</SCRIPT>
</HEAD>
<BODY>
<XML ID="dsoXML" SRC="Inventory.xml"></XML>
<H2>Find Elements by Element Name</H2>
Element name:<INPUT TYPE="TEXT" ID="ElementName">
<BUTTON ONCLICK="ShowElements()">Show Elements</BUTTON>
<HR>
<DIV ID=ResultDiv></DIV>
</BODY>
</HTML>
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:存取与显示XML文件的属性值
· 下一篇:显示可变量目的XML元素
· 为何使用XML
· 使用XPathExpression类对XML进行排序
· 在.NET Framework中轻松处理XML数据(4-3)
· 存取XML的属性
· 使用XML模板


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077