星期一, 12月 24, 2007

JavaScript讀XML

//1.讀XML
function loadXML(xmlFilePath)
{        
if(window.ActiveXObject)// code for IE
{
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false;
xmlDoc.load(xmlFilePath);
}else if (document.implementation&&document.implementation.createDocument)// code for Mozilla, etc.
{
xmlDoc = document.implementation.createDocument('', '', null);
xmlDoc.load(xmlFilePath);
}
else
{
alert('您的瀏覽器不支持xml文件讀取,於是本頁面禁止您的操作,推薦使用IE5.0以上可以解決此問題!');
return null;
}
}


//2.瀏覽XML
//取得node方法
//Method 1 利用tag name
//1.1 取得陣列
 var Area = xmlDoc.getElementsByTagName("test"); 
 for (var i = 0 ; i < Area.length ; i++){
   var node = Area[i].firstChild.nodeValue; 
 }


//Method 2 XPATH
xmlDoc.selectSingleNode("test").text;  //從根找起
 xmlDoc.selectSingleNode("//test").text;  //回傳第一個找到的



//3.存取node (ex. lalala)
xmlNode.xml; // lalala
xmlNode.text; // lalala
xmlNode.getAttribute('what'); //ok

//4.讀子節點或父節點
xmlDoc.childNodes;
xmlDoc.parentNode;

//5.新增node

//6.儲存
xmlDoc.save("xxxx.xml");

星期二, 12月 18, 2007

XPath指定節點

原本利用getElementById來取得指定的節點
才發現要用DTD指名該節點的欄位為ID型態
MSDN的說明:雖然 ID 型別的屬性可以在 XSD 結構描述或 DTD 中定義,但是這一版的產品只支援在 DTD 中定義者。除非在 DTD 中定義,否則名稱為 "ID" 的屬性並不是 ID 型別。不知道屬性是否為 ID 型別的實作,應該會傳回 Null 參照 (即 Visual Basic 中的 Nothing)。

後來很辛苦的一步步建好
才發現id得存文字型態...會寫這句當然是因為id用數字存
後來銀光大大利用xpath指到屬性...也可以抓到了
XmlNode aaa = doc.SelectSingleNode("//Area [@ID='9']");