PDA

View Full Version : How do I search xml data using javascript?



ngodoan
07-02-2010, 12:26
Hi các pro,
mình đang bị 1 vấn đề nho nhỏ như sau, mong các bạn giúp đỡ : Mình có 1 textbox & 1 button . Mình muốn khi người dùng nhập thông tin tìm kiếm vào textbox và chọn button thì nó sẽ tìm kiếm thông tin trong file xml, sau đó hiển thị ra nếu tìm thấy.

Ví dụ : gõ vào ID : 001, bấm search button thì nó chạy vào file xml, tìm xem nếu thấy có mã 001 thì hiển thị chi tiết của ID 001 đó .

File xml có dạng như sau :

<employees>
<employee id="5">John Doe</employee>
<employee id="6">Arnab</employee>
</employees>

Mong các bạn chỉ giúp tận tình. Cám ơn các bạn nhiều

lenggiauit
07-02-2010, 14:32
Có phải thế này ko ? :huh:


function loadXMLDoc(dname)
{
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
xmlDoc=document.implementation.createDocument("","",null);
}
catch(e) {alert(e.message)}
}
try
{
xmlDoc.async=false;
xmlDoc.load(dname);
return(xmlDoc);
}
catch(e) {alert(e.message)}
return(null);
}
//
// Function Load Item -----
function loadItem(xmlfile, nodename, ID)
{
var fxml = loadXMLDoc(xmlfile);
var AttID = fxml.getElementsByTagName(nodename).attributes.get NamedItem("id").value;
if( AttID == ID )
{
var y = fxml.getElementsByTagName(nodename)[0].childNodes[0].nodeValue;
alert(y);
}



}


Chưa test chẵng biết có đúng ko nữa lol

ngodoan
07-02-2010, 14:45
bạn ơi, bạn có thể giúp mình làm chi tiết hơn dc ko ? hic hic

lenggiauit
07-02-2010, 16:01
File XML


<?xml version="1.0" encoding="utf-8"?>
<emps>
<emp id="001">
<name> John</name>
</emp>
<emp id="002">
<name> Mit</name>
</emp>
</emps>

File test.html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script language="javascript">
function loadXMLDoc(dname)
{
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
xmlDoc=document.implementation.createDocument("","",null);
}
catch(e) {alert(e.message)}
}
try
{
xmlDoc.async=false;
xmlDoc.load(dname);
return(xmlDoc);
}
catch(e) {alert(e.message)}
return(null);
}
function loadItembyID(xml, nodename)
{
var ID = document.getElementById('emp_ID').value;
var fxml = loadXMLDoc(xml);
var x = fxml.getElementsByTagName(nodename);
for (var i = 0; i<= x.length -1; i++)
{
var attID = fxml.getElementsByTagName(nodename)[i].attributes.getNamedItem("id").value;
if(attID == ID)
{
var d =fxml.getElementsByTagName(nodename)[i].childNodes[0].childNodes[0].nodeValue;
alert(d);
}
}

}

</script>
</head>

<body>
<input id="emp_ID" />
<input type="button" value="click" onclick="loadItembyID('Emps.xml', 'emp')" />

</body>
</html>



Vừa test xong ok trên IE còn FF có thế ko ra do nó ko hiễu chỗ var d =fxml.getElementsByTagName(nodename)[i].childNodes[0].childNodes[0].nodeValue;
2 cái childNodes[0] FF ko hiểu :)
Nếu FF thì : var d =fxml.getElementsByTagName('name')[i].childNodes[0].nodeValue;

Đông Tây
21-02-2010, 10:04
test code trên ok, cho mình hỏi Có cách nào lấy tên và vị trí cụ thể của 1 element trong xml ko nhỉ ?

haicop
21-02-2010, 22:05
Theo mình thì bạn cần làm 2 việc
1- Đọc toàn bộ file XML thành 1 array nhiều chiều, search các hàm về XML trên php.net
2- Search ID trong array = PHP
( tìm google với "php array search"

lenggiauit
22-02-2010, 19:28
test code trên ok, cho mình hỏi Có cách nào lấy tên và vị trí cụ thể của 1 element trong xml ko nhỉ ?
Mấy dòng code đơn giản trên đó thêm vô vài cái nữa là có NodeName + vị trí của Element rồi còn gì =,=