-- 作者:gino
-- 发布时间:6/27/2006 3:17:00 PM
-- 如何指定一个节点作for循环,
Dear sir, i have a xml file like below xml file: <?xml version="1.0" encoding="UTF-8"?> <COMPANY> <Department name='CPU'> <FAX> <FaxNo>28222222</FaxNo> <FaxNo>28333333</FaxNo> </FAX> <Session name='PDT'> <FAX> <FaxNo>28255555</FaxNo> </FAX> <StaffList> <Staff> <StaffName>Rcok Hsu</StaffName> <PhoneNo>272</PhoneNo> </Staff> <Staff> <StaffName>Jerry</StaffName> <PhoneNo>103</PhoneNo> </Staff> </StaffList> </Session> <Session name='PDT'> <FAX> <FaxNo>28258287</FaxNo> </FAX> <StaffList> <Staff> <StaffName>Harry</StaffName> <PhoneNo>277</PhoneNo> </Staff> <Staff> <StaffName>Ricky</StaffName> <PhoneNo>375</PhoneNo> </Staff> </StaffList> </Session> </Department> </COMPANY> my asp is below <HTML> <HEAD> <TITLE>ASP與XML搜尋引擎</TITLE> </HEAD> <% ' 搜尋XML文件的節點 Function SearchResult(strSearch) Dim objxmlDom, ObjRootNode, DptElement, strSessName, strDptname Dim DptList, FaxList, SessionList, strMessage Dim DptListAttrib ,DptElementAttrib Dim strFaxNo strMessage = "" ' 載入XML文件 Set objxmlDom = Server.CreateObject("Microsoft.XMLDOM") 'objxmlDom.validateOnParse = true objxmlDom.Load(Server.MapPath("PhoneBook2.xml")) Set objRootNode = objxmlDom.documentElement ' 搜尋所有的keywords節點 If objRootNode.hasChildNodes() Then For Each DptList in objRootNode.childNodes 'AT COMPANY LEVEL INTO EACH DEPARTMENT DptListAttrib = DptList.attributes.getNamedItem("name").text '---get DEPARTMENT ATTRIBUTE name If InStr(DptListAttrib,strSearch) Then '如果搜尋的字符合 DEPARTMENT那就要顯示整個DEPARTMENT DATA For Each DptElement in DptList.childNodes 'AT department LEVEL FOR COMPANY CHILD '---FAX, SESSION 'FAX PART IF DptList.selectSingleNode("FAX").hasChildNodes() Then strMessage = strMessage & DptElement.childNodes.length For i=0 to DptElement.childNodes.length strMessage = strMessage & DptList.firstChild.nodeName & " </BR>" strMessage = strMessage & "oo" IF FaxList.nodeName="FaxNo" then strFaxNo = DptElement.selectSingleNode("FaxNo").text strMessage = strMessage & strFaxNo End if Next End If Next End If Next End If Set objxmlDom = Nothing SearchResult = strMessage End Function %> <BODY> <H2>分機搜尋引擎</H2><HR> <% Dim strResult ' 取得搜尋的字串 strSearch = UCase(Request.QueryString("strSearch")) // strSearch = Request.Form("strSearch") If strSearch <> "" Then strResult = SearchResult(strSearch) End If %> <FORM action="PhoneBook.asp" method="POST"> 輸入搜尋字串 : <INPUT type="TEXT" name="strSearch" value=<%=strSearch%>> <INPUT type="SUBMIT" value="開始搜尋"> </FORM> <HR> <% If strResult <> "" Then %> <B>搜尋的結果 .... </B><BR><BR> <DIV><%=strResult%></DIV> <% Else If strSearch <> "" Then %> <B>沒有任何符合的網址<%=strResult%></B><BR> <% End If End If %> </BODY> </HTML> 当我搜寻department的时候,若名字一样, 我就会进入此department然后将此部分的数据显示, 可是当我要去抓取FAX的时候, IF DptList.selectSingleNode("FAX").hasChildNodes() Then strMessage = strMessage & DptElement.childNodes.length For i=0 to DptElement.childNodes.length 我却无法用循环显示DEPARTMENT中的FAX NO….他竟然还会回圈到SESSION 请问各位要怎么指定回圈某一个节点呢??? 谢谢各位指导啊 This picture is my structure..... 此主题相关图片如下:
[此贴子已经被作者于2006-6-29 11:35:46编辑过]
|