- <viewentry position="1" unid="568D6BAD059BC636482572E4004A2FE8" noteid="942" siblings="3">
- <entrydata columnnumber="0" name="$32">
viewentry>
- <viewentry position="2" unid="73A3A420AE5EDA2B4825731B005F7964" noteid="952" siblings="3">
- <entrydata columnnumber="0" name="$32">
viewentry>
- <viewentry position="3" unid="AEECFD48BB1762534825731B005F93EF" noteid="95E" siblings="3">
- <entrydata columnnumber="0" name="$32">
viewentry>
viewentries>
这个是xml的数据格式
对应的js代码如下,里面包含了注释和调用方法
function GetViewData(server, path, view, column, category, key)
{
// web下获得视图数据,并解析
// 调用方式
// var a = DbLookup(")
// 前面两个参数为空,表示当前数据库
// 建立XMLDOM对象
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false; // 同步模式
// 形成服务器路径
var pos = 0;
currURL = (document.location.href).toLowerCase();
if (Trim(server) == "") { // 如果传入的是空参数
pos = currURL.indexOf('://');
if (pos > 0 ){
pos += 3;
pos = currURL.indexOf('/', pos);
server = currURL.substring(0, pos)
}
}
// 形成数据库路径
if(Trim(path) == "" ){
if( pos > 0 ){
newPos = currURL.indexOf('.nsf',pos);
if (newPos > 0){
path = currURL.substring(pos+1,newPos+4)
}
}
}
// Javascript 数组索引以0为基数,所以列数减1
if( !isNaN(column) )
column -= 1;
// 打开url
var vurl = Trim(server)+"/" + Trim(path) + "/" + view + "?readviewentries&login=1&count=9999";
if ((typeof (category) != "undefined") && (Trim(category) != ""))
vurl += "&RestrictToCategory="+category;
if ((typeof (key) != "undefined") && (Trim(key) != ""))
vurl += "&startkey="+key;
xmlDoc.load(vurl);
// 如果没有结果,返回空
if (xmlDoc.documentElement == undefined)
return ""
// 遍历结果,把内容放到数组中去
var nodes = xmlDoc.documentElement.childNodes;
var temp = new Array(nodes.length);
var j = 0;
// 如果有key,则需要和key比较
if(typeof(key) != "undefined"){
// 用在DbLookup
for (var i = 0; i < nodes.length; i++){
if(nodes.item(i).childNodes.item(0).text==key){
temp[j] = nodes.item(i).childNodes.item(column).text;
alert(temp[j])
j++;
}
else{
break;
}
}
}
else{
// 用在DbColumn
for (var i = 0; i < nodes.length; i++){
temp[j] = nodes.item(i).childNodes.item(column).text;
j++;
}
}
// 结果用, 分隔,返回拼接的字符串
var results = ""
for (var i = 0; i < j; i++){
if (i==0){
results = temp[i];
}
else{
results = results + ", " + temp[i];
}
}
return results;
}
function DbLookup(server,path,view,column, category,key)
{
// javascript版的DbLookup,有些需求取数据,但是又不想要刷新页面的时候可以用到
// 调用方式:
// 当前数据库
// var a = DbLookup("","","LotusNotes",2, "category", "Keywords",)
// 其他数据库
// var a = DbLookup("")
//
//
//
return GetViewData(server, path, view, column, category, key)
}
function DbColumn(server,path,view,column, category){
// javascript版的DbColumn
// 调用方式:
// 当前数据库
// var a = DbColumn("","","LotusNotes",1, "category")
// 其他数据库
// var a = DbColumn(", "category")
//
//
//
return GetViewData(server, path, view, column, category)
}