添加使用Javascript按名字或姓氏搜索xml标签的功能

时间:2009-09-22 19:08:30

标签: javascript

如何使用Javascript添加使用名字或姓氏搜索xml标签的功能?目前它只适用于名字。见代码。

<html>

<head>
<script type="text/javascript">

function createRequestObject() {
var ro
var browser = navigator.appName
if(browser == "Microsoft Internet Explorer"){
    ro = new ActiveXObject("Microsoft.XMLHTTP")
}else{
    ro = new XMLHttpRequest()
}
return ro
}

var http = createRequestObject()

function sndReq() {

http.open('get', 'js2lab5.xml', true)
http.onreadystatechange = handleResponse
http.send(null)
 }

function handleResponse() {

if(http.readyState == 4){

    var response = http.responseXML.documentElement

选= response.getElementsByTagName( “LISTING”)

for(i = 0; i

if (nameobj[0].firstChild.data == document.getElementById("first").value){

    addressobj = listings[i].getElementsByTagName("ADDRESS")
    phoneobj = listings[i].getElementsByTagName("PHONE")
           imgobj = listings[i].getElementsByTagName("IMAGE")


           document.getElementById("address").innerHTML = addressobj[0].firstChild.data
           document.getElementById("phone").innerHTML = phoneobj[0].firstChild.data
           document.getElementById("photo").innerHTML = "<img src=' " + imgobj[0].firstChild.data + " ' />"


          }
     }
  }
}

</script>
</head>

<body>
<form id="search">
  <input type="text" id="first" />
  <input type="button" value="Search Phonebook" onClick="sndReq()" />
</form>
  <div id="address"></div>
  <div id="phone"></div>
  <div id="photo"></div>
</body>

</html>

和XML代码:

<?xml version="1.0"?>
<!DOCTYPE PHONEBOOK>
<PHONEBOOK>
   <LISTING>
      <FIRST>John</FIRST>
      <LAST>Smith</LAST>
      <PHONE>1-800-123-4567</PHONE>
      <ADDRESS>320 E. John St, Champaign IL 61820</ADDRESS>
      <IMAGE>smith.jpg</IMAGE>
   </LISTING>
</PHONEBOOK>

1 个答案:

答案 0 :(得分:0)

使用XPATH选择节点非常简单。

var query = nameobj[0].firstChild.data;
response.selectNodes("(//FIRST|//LAST)[text()='"+query+"']")

可悲的是,微软和Firefox有一个不同的模型用于选择Xpath,因此在FireFox as is shown here中基本上有两个解决方案原型selectNodes

或者包括一个很棒的XML跨浏览器包装器,如Sarissa

根据您的需要,第一个可能已经足够好了。如果您计划在投资Sarissa的浏览器中使用XML做很多事情,那么将付出十倍的代价。