vb6.0读写XML和XML与数据库进行数据交换的代码

vb6.0读写XML和XML与数据库进行数据交换的代码,第1张

对于XML文档,插入、修改、检索等数据操作可以通过一个XML解析器及其列举的一系列对象来完成。Microsoft的XML解析器驻留在名为msxmldll的动态链接库文件中。因为msxml是一个COM对象,所以可以在任何兼容ActiveX的环境中使用它,例如在Visual Basic和ASP中。

(1)新建一个工程。在Form1中添加一个CommandButton控件。为了使用msxml解析器,必须事先设置工程项目对msxmldll的引用。选择“工程”→“引用”命令,打开“引用”对话框,在此选择Microsoft XMLv26或更高版本。

(2)装载XML文档。遍历节点集合,可以使用Visual Basic的For Each…Next循环结构在节点对象集合中循环。在“显示XML数据”按钮事件代码后添加下列代码:

Private Sub Command1_Click()

Set xml = New DOMDocument

Call xmlLoad(AppPath & "\indexxml") 'indexxml为描述图书信息的XML文档

Dim root As IXMLDOMElement

Set root = xmldocumentElement

Dim node As IXMLDOMNode

For Each node In rootchildNodes

List1AddItem nodeText

Next

End Sub

可以参考以上方法,复杂的还得自己研究。

ML是eXtensible Markup Language的缩写。

XML文档中的标签和标签继承性称为模式。

一些模式是随意组成的(例如,本文中的示例XML代码纯粹是即兴创作的),而其他模式则由标准组织严格定义。例如,可缩放矢量图形(SVG)模式由W3C定义,而DocBook模式由Norman Walsh定义。

模式强制执行一致性。最基本的模式通常也是最严格的。在我的示例XML代码中,将发行版名称放在节点中是没有意义的,因为文档的隐含模式清楚地表明 mascot必须是发行版的“子”元素。

HTML中使用的标签都是预定义的。HTML文档只能使用在HTML标准中定义过的标签(如<p>、<h1>等等)。

XML允许创作者定义自己的标签和自己的文档结构。

XML不是对HTML的替代。

XML是对HTML的补充。

XML不会替代HTML,理解这一点很重要。在大多数Web应用程序中,XML用于传输数据,而HTML用于格式化并显示数据。

每隔一段时间读取一次XML文档

/

//浏览器版本

var CLIENT_IE = parseFloat(navigatorappVersionsubstring(navigatorappVersionindexOf("MSIE")+4));

//公共变量

var langMsg = new Array();

langMsg["Odds_up_0"] = "images/pan_up_none_sounds_1swf";

langMsg["Odds_up_1"] = "images/pan_up_sounds_1swf";

langMsg["Odds_up_2"] = "images/pan_up_sounds_2swf";

langMsg["Odds_down_0"] = "images/pan_down_none_sounds_1swf";

langMsg["Odds_down_1"] = "images/pan_down_sounds_1swf";

langMsg["Odds_down_2"] = "images/pan_down_sounds_2swf";

langMsg["Pan_chg_0"] = "images/pan_chg_none_sounds_1swf";

langMsg["Pan_chg_1"] = "images/pan_chg_sounds_1swf";

langMsg["Pan_chg_2"] = "images/pan_chg_sounds_2swf";

langMsg["PanZou_img"] = "<IMG src='images/zou2gif' width='10' height='10' border='0'>";

var ARR_ACTIVEX = ["MSXML4DOMDocument", "MSXML3DOMDocument", "MSXML2DOMDocument", "MSXMLDOMDocument", "MicrosoftXmlDom"];

/

读取XML文件,并生成主面板

/

//比分中文字广告,此广告显示在主看板第三行

var PM_oddsAd = "";

var PM_oddsAdMsg = "";

var lastUpdateTime = 0;

var msACTIVEXFoundMsg = false;

var msACTIVEXFoundAd = false;

var msACTIVEXFoundOdds = false;

var basyncProperty = true; //

var loadMsgOK = false; //

var loadAdOK = false;

var xmlActiveMsg = null;

var xmlActiveAd = null;

var xmlActiveOdds = null;

var orderBy = "InitPos"; //

var orderDes = "ASC"; //

var oddsAdNum = 0;

if(loadPageDone == false){

//检查语言包与js文件是否加载

if((PM_languagePag == false) || (PM_leaguePag == false)){

windowsetTimeout("documentall['txtLoading']innerHTML = PM_strLiveLODDFAILED",2000); //初始隐藏赛事数量

windowsetTimeout("documentall['pendingMessage']styledisplay='none'",5000);

windowsetTimeout("windowlocationreload()",5200);

} else {

//取得页面公告

if(showOddsMsg != false) windowsetTimeout("readXMLMatchMsg()" ,200);

//取得页面广告

if(showOddsAd != false) windowsetTimeout("readXMLMatchAd()",500);

windowsetTimeout("readInitXMLOddsDoc()",2000);

}

}

//创建xml dom 对象

function createActiveXObject(str){

try{

for(var i=0; i < ARR_ACTIVEXlength && !eval("msACTIVEXFound" + str); i++){

try{

eval("xmlActive" + str + " = new ActiveXObject(ARR_ACTIVEX[i])");

eval("msACTIVEXFound" + str + " = true");

} catch(objException) {

eval("xmlActive" + str + " = null");

}

}

if (!eval("msACTIVEXFound" + str)){

alert(PM_strClientNODOM);

}

} catch (e){

//alert("get live score msg XML failed! " + e);

}

} // 结束 createActiveXObject() 函数

/

处理即时页面的公告文字

/

var oldXMLMatchMsg = "";

//读取XML文件

function readXMLMatchMsg(){

if(oddsMsgXmlUrl != ""){

createActiveXObject("Msg");

xmlActiveMsgload(oddsMsgXmlUrl);

xmlActiveMsgonreadystatechange = getXMLOddsMessage;

windowsetTimeout("readXMLMatchMsg()",msUpdOddsMsg);

}

} // 结束 readXMLMatchMsg() 函数

function getXMLOddsMessage(){//这个函数

try{

if (xmlActiveMsgreadyState != 4) return;

if (xmlActiveMsgxml==null || xmlActiveMsgxml=="") return;

xmlOddsMsgXMLDocumentasync = false;

xmlOddsMsgXMLDocumentloadXML(xmlActiveMsgxml);

if (oldXMLMatchMsg == xmlActiveMsgxml) return;

var rs;

rs = xmlOddsMsgrecordset;

var msgInfo = rs("asia")value;

if(msgInfo == "") return;

var msgFullInfo = msgInfo; //htmlSpecialChar(msgInfo);

msgFullInfo = '<table width="646" border="0" cellspacing="1" bgcolor="#CCCCCC"><tr><td height="22" align="center" bgcolor="#FFFFFF">' + msgFullInfo + '</td></tr></table><table width="520" border="0" cellspacing="0" align="center"><tr><td height="2" align="center" bgcolor="#FFFFFF"></td></tr></table>';

if(documentallasiaOddsMessageinnerHTML != msgFullInfo){

documentallasiaOddsMessageinnerHTML = msgFullInfo; //设定即时比分公告信息

}

oldXMLMatchMsg = XMLMatchMsgxml;

loadMsgOK = true;

} catch (e){

//alert("get live score msg XML failed! " + e);

}

} // 结束 getXMLOddsMessage() 函数

/

处理即时比分页面的广告文字

/

//读取XML文件

function readXMLMatchAd(){

if(oddsAdXmlUrl != ""){

createActiveXObject("Ad");

xmlActiveAdload(oddsAdXmlUrl);

xmlActiveAdonreadystatechange = getXMLOddsAdMessage;

}

} // 结束 readXMLMatchAd() 函数

function getXMLOddsAdMessage(){

try{

if (xmlActiveAdreadyState != 4) return;

if (xmlActiveAdxml==null || xmlActiveAdxml=="") return;

xmlOddsAdXMLDocumentasync = false;

xmlOddsAdXMLDocumentloadXML(xmlActiveAdxml);

var rs;

rs = xmlOddsAdrecordset;

PM_oddsAd = rs("ad")value;

if((PM_oddsAd != null) && (PM_oddsAd != "")){

PM_oddsAdMsg = '<TR id=tr_oddsad bgColor=#ffffff height=20>' +

'<TD id=td_oddsad align=middle colSpan=12>' + PM_oddsAd + '</TD>' +

'</TR>';

oddsAdNum = 1;

}

loadAdOK = true;

} catch (e){

//alert("get odds score ad XML failed! " + e);

}

} // 结束 getXMLOddsAdMessage() 函数

/

即时赔率主看面板资料处理

处理读取即时赔率XML资料

即时赔率主看面板资料生成

/

var A_mList = new Array(); //保有存所有赛事资料

var leagTotal = 0; //总共联赛数量

var oldXMLOdds = ""; //旧的资料

var usedSounds = false; //是否已经使用声音 此项主要全多变时不会出现太多的声音

var popupBool = false; //是否需要弹出页面

var reInit = false; //是否时间发生变化,需要重新排序

var orderBy = "InitPos"; //排序字段

var orderDes = "ASC"; //排序顺序

var loadType = "init"; //下载类型,初始化

//读取XML文件

function readInitXMLOddsDoc(){

if(loadType == "reload") A_mList = new Array(); //如果重载资料,则清空原队列

if(oddsXMLFullFile != ""){

createActiveXObject("Odds");

xmlActiveOddsload(oddsXMLFullFile);

xmlActiveOddsonreadystatechange = initOddsMainBoard;

windowsetTimeout("readXMLOddsDoc()",msXMLDocCyc);

}

} // 结束 readInitXMLOddsDoc() 函数

function initOddsMainBoard(){

try{

if (xmlActiveOddsreadyState != 4) return;

if (xmlActiveOddsxml==null || xmlActiveOddsxml=="" || oldXMLOdds == xmlActiveOddsxml) return;

xmlOddsDocXMLDocumentasync = false;

xmlOddsDocXMLDocumentloadXML(xmlActiveOddsxml);

rs = xmlOddsDocrecordset;

//初始化联赛选择层内容

var leagStr = initBoardLeag(rs("lg")value,rs("lgs")value);

//指针后移

rsMoveNext();

var count = 0;

//把节点内的数据读入到数组中

while(!rsEOF){

if(((st == 2) && (rs("ps")value == 4)) || ((st == 4) && (rs("ps")valueindexOf("4") < 0))){

rsMoveNext();

continue;

}

A_mList[count] = Array(); //创建新数组,用以保佑读进的节点数据

A_mList[count]MatchID = toNumber(rs("mid")value);

A_mList[count]MatchTime = rs("mt")value;

A_mList[count]PanZou = toNumber(rs("pz")value);

A_mList[count]ph = rs("ph")value;

A_mList[count]pr = rs("pr")value;

A_mList[count]pa = rs("pa")value;

A_mList[count]ps = rs("ps")value;

A_mList[count]pho = rs("pho")value;

A_mList[count]pdo = rs("pdo")value;

A_mList[count]pao = rs("pao")value;

var LeagID = toNumber(rs("lg")value);

A_mList[count]LeagID = LeagID;

A_mList[count]League = PM_leaguesList[LeagID][1];

A_mList[count]LeagColor = PM_leaguesList[LeagID][5];

A_mList[count]LeagOrd = PM_leaguesList[LeagID][6];

A_mList[count]TeamA = rs("ta")value;

A_mList[count]TeamB = rs("tb")value;

A_mList[count]TeamAID = rs("taid")value;

A_mList[count]TeamBID = rs("tbid")value;

A_mList[count]IntegA = rs("ita")value;

A_mList[count]IntegB = rs("itb")value;

A_mList[count]phUpd = 0; //上水颜色最化时间

A_mList[count]prUpd = 0; //盘口颜色最化时间

A_mList[count]paUpd = 0; //下水颜色最化时间

A_mList[count]phoUpd = 0; //主租颜色最化时间

A_mList[count]pdoUpd = 0; //主平颜色最化时间

A_mList[count]paoUpd = 0; //客胜颜色最化时间

A_mList[count]Visible = true; //行是否可见

A_mList[count]InitPos = count;

count++;

rsMoveNext();

}

//初始化表格

liveScoreInfo = initMainBoard();

documentallasiaOddsMainBoardinnerHTML = liveScoreInfo; //初始化即时赛事列表

documentallleagueSelectinnerHTML = leagStr; //初始化联赛

loadingFinish();

oldXMLOdds = xmlActiveOddsxml;

} catch(e){

}

} // 结束 initOddsMainBoard() 函数

//初始化联赛选择层内容

function initBoardLeag(str,str2){

var leagStr = '';

try{

if((str == null) || (str == "")){

leagTotal = 0;

return '';

}

var leagAry = strsplit("|");

var leagS = str2split("|");

if(leagArylength > 20){

leagswidth=160;

}

var leagueNum = 0;

leagStr = "<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td>";

for(var i = 0; i < leagArylength; i++){

if((st == 2) && (leagS[i] == 4)) continue; //即时盘

if((st == 4) && (leagS[i]indexOf("4") < 0)) continue; //初盘

leagueNum++;

leagStr += "<INPUT TYPE='checkbox' NAME='leagCheck_"+leagueNum+"' value='"+leagAry[i]+"' onClick='showLeagMatch("+leagueNum+")' checked>"+PM_leaguesList[leagAry[i]][1];

if((leagArylength > 20) && (leagueNum % 2 != 0)){

leagStr += "</td><td width=50%>";

} else{

leagStr += "</td></tr><tr><td>";

}

}

leagStr += "</td></tr></table>";

leagTotal = leagueNum;

} catch(e){

debug("initBoardLeag() " + e);

}

return leagStr;

} // 结束 initBoardLeag() 函数

//初始化主面板内容

function initMainBoard(){

var tbInfo = '';

try{

//初始化表头

tbInfo = '<TABLE width="646" id="oddsAsiaTb" border=0 cellPadding=1 cellSpacing=1 bgcolor="#CCCCCC">';

tbInfo += initBoardHeader();

//表内赛事内容

for(var i = 0; i < A_mListlength; i++){

if(i == PM_AD_ROW) tbInfo += PM_oddsAdMsg;

tbInfo += setBoardRowData(i);

}

if(A_mListlength <= 0) tbInfo += '<tr><td colspan=12 height=22 bgcolor=#FFFFFF align=center>'+PM_strOddsTODAYNONE+'</td></tr>';

tbInfo += '</table>'; //初始化表尾

} catch(e){

debug("initMainBoard() " + e);

}

return tbInfo;

} // 结束 initMainBoard() 函数

//初始化主面板表头

function initBoardHeader(){

var tbInfo = '';

try{

var buf = '';

if(PM_strTBHEADER == null) return buf;

var headAry = PM_strTBHEADERsplit("|");

buf = '<TR bgColor=#006699><TD width="60" height="22" align=center style="color: #FFFFFF;">' + headAry[0] + '</TD><TD width="53" colspan="2" align=center style="color: #FFFFFF;">' + headAry[1] + '</TD><TD width="105" align=center style="color: #FFFFFF;">' + headAry[2] + '</TD><TD width="43" align=center style="color: #FFFFFF;">' + headAry[3] + '</TD><TD width="72" align=center noWrap style="color: #FFFFFF;">' + headAry[4] + '</TD><TD width="43" align=center noWrap style="color: #FFFFFF;">' + headAry[5] + '</TD><TD width="105" align=center noWrap style="color: #FFFFFF;">' + headAry[6] + '</TD><TD width="35" align=center noWrap style="color: #FFFFFF;">' + headAry[7] + '</TD><TD width="35" align=center noWrap style="color: #FFFFFF;">' + headAry[8] + '</TD><TD width="35" align=center noWrap style="color: #FFFFFF;">' + headAry[9] + '</TD><TD width="40" align=center style="color: #FFFFFF;">' + headAry[10] + '</TD></TR>';

return buf;

} catch(e){

debug("initBoardHeader() " + e);

}

return tbInfo;

} // 结束 initBoardHeader() 函数

//生成主看面板一行信息

function setBoardRowData(pos){

var rowInfo = '';

if((pos < 0) || (pos > A_mListlength)) return rowInfo;

try{

var mid = A_mList[pos]MatchID;

var trSty = '';

var zouImg = "";

var bgcolor1 = "";

if(A_mList[pos]Visible == false) trSty = ' style="display:none"';

if(pos % 2 == 0) cls = ' class="tr1"';

else cls = ' class="tr2"';

if(A_mList[pos]PanZou == "1") zouImg = langMsg["PanZou_img"];

if((pos == 0) || (A_mList[pos]MatchTimeslice(0,10) != A_mList[pos - 1]MatchTimeslice(0,10))){

var mt = A_mList[pos]MatchTime;

var dt = new Date(mtslice(0,4) + "/" + mtslice(5,7) + "/" + mtslice(8,10));

var wk = dtgetDay();

//显示日期

rowInfo += '<TR align="center" bgcolor="#FFFFFF" style="color: #000000;"><TD height="22" colSpan=12>' + mtslice(5,7) + '/' + mtslice(8,10) + '/' + mtslice(0,4) + ' ' + PM_strWEEK[wk] + '</font></TD></TR>';

}

rowInfo += '<TR '+cls+' id="tr_'+pos+'" '+trSty+'><TD height="22" align=center bgcolor="'+A_mList[pos]LeagColor+'" style="color: #FFFFFF;" id="leag_'+mid+'">'+A_mList[pos]League+' '+zouImg+'</TD><TD width="20" align=center><input id="matchCheck_'+pos+'" type="checkbox" value="1" onclick="hiddenOneMatch('+pos+');" checked></TD><TD align=center style="color: #333333;" id="matchTime_'+mid+'">'+A_mList[pos]MatchTimeslice(11,16)+'</TD><TD align="right" id="teama_'+mid+'" class="atm">'+A_mList[pos]IntegA+'<A href="javascript:xy_PopTeamDetail(' + A_mList[pos]TeamAID + ')" class="lan2" title="'+PM_strTeamInfo+'">'+A_mList[pos]TeamA+'</A></TD><TD align=center id="ph_'+mid+'" class="aodds">'+A_mList[pos]ph+'</TD><TD align=center noWrap id="pr_'+mid+'" class="pan1">'+getPanKou(toNumber(A_mList[pos]pr))+'</TD><TD align=center noWrap id="pa_'+mid+'" class="aodds">'+A_mList[pos]pa+'</TD><TD align="left" noWrap id="teamb_'+mid+'" class="atm"><A href="javascript:xy_PopTeamDetail(' + A_mList[pos]TeamBID + ')" class="lan2" title="'+PM_strTeamInfo+'">'+A_mList[pos]TeamB+'</A>'+A_mList[pos]IntegB+'</TD><TD align=center noWrap id="pho_'+mid+'" class="aeruop">'+A_mList[pos]pho+'</TD><TD align=center noWrap id="pdo_'+mid+'" class="aeruop">'+A_mList[pos]pdo+'</TD><TD align=center noWrap id="pao_'+mid+'" class="aeruop">'+A_mList[pos]pao+'</TD><TD height=25 align=center style="color: #000000;"><TABLE cellpadding="0" cellSpacing="1" border=0><TBODY><TR><TD><A href="javascript:xy_PopOddsEurop(' + mid + ')" class="lu1" title=' + PM_strPEILVD + '>' + PM_strEurop + '</A></TD><TD><A href="javascript:xy_PopOddsAsia(' + mid + ')" class="lu1" title=' + PM_strODDSD + '>' + PM_strAsia + '</A></TD><TD><A href="javascript:xy_PopAnalyse(' + mid + ')" class="lu1" title=' + PM_strOLDD + '>' + PM_strAnalyse + '</A></TD></TR></TBODY></TABLE></TD></TR>';

} catch(e){

debug("setBoardRowData() " + e);

}

return rowInfo;

} // 结束 setBoardRowData() 函数

//标志加载完成

function loadin

XML是Extensible Markup Language的简写,一种扩展性标识语言。

这是标准的定义。那么什么是标志语言,为什么叫扩展性?已经让

人有些糊涂。我想我们这样来理解会好一些:

对HTML你已经非常熟悉了吧,它就是一种标记语言,记得它的全称吗:"Hypertext Markup Language" 超文本标记语言。明白了?同时,HTML里面有很多标签,类似,

等,都是在HTML40里规范和定义,而XML里允许你自己创建这样的标签,所以叫做可扩展性。

这里有几个容易混淆的概念要提醒大家:

1XML并不是标记语言。它只是用来创造标记语言(比如HTML)的元语言。天,又糊涂了!不要紧,你只要知道这一点:XML和HTML是不一样的,它的用处途比HTML广泛得多,我们将在后面仔细介绍。

2XML并不是HTML的替代产品。XML不是HTML的升级,它只是HTML的补充,为HTML扩展更多功能。我们仍将在较长的一段时间里继续使用HTML。(但值得注意的是HTML的升级版本XHTML的确正在向适应XML靠拢。)

3不能用XML来直接写网页。即便是包含了XML数据,依然要转换成HTML格式才能在浏览器上显示。

下面就是一段XML示例文档(例1),用来表示本文的信息:

ajie

ajie@aolhoocom

20010115

注意:

1这段代码仅仅是代码,让你初步感性认识一下XML,并不能实现什么具体应用;

2其中类似title,author的语句就是自己创建的标记(tags),它们和HTML标记不一样,例如这里的title是文章标题的意思,HTML里的title是页面标题。

    ——此文章摘自《C#高级编程(第 版)》定价 元 特价 元 购买

    XmlDocument及其派生类XmlDataDocument(详见本章后面的内容)是用于在 NET中表示DOM的类 与XmlReader 和 XmlWriter不同 XmlDocument具有读写功能 并可以随机访问DOM树 XmlDocument类似于MSXML中的DOM执行方式 如果您用MSXML编过程序 就会觉得使用XmlDocument很合适

    下面介绍的示例创建一个XmlDocument对象 加载磁盘上的一个文档 再从标题元素中加载带有数据的列表框 这类似于XmlReader一节的示例 区别是本例选择要使用的节点 而不是像XmlReader示例那样浏览整个文档

    下面是该示例的代码 与XmlReader示例相比 这个示例是比较简单的(该文件在下载的DOMSample 文件夹中)     private void button _Click(object sender System EventArgs e)     {        // doc is declared at the module level        // change path to match your path structure        doc Load( \\ \\ \\books xml );        // get only the nodes that we want        XmlNodeList nodeLst=doc GetElementsByTagName( title );        // iterate through the XmlNodeList        foreach(XmlNode node in nodeLst) listBox Items Add(node InnerText);     }

    注意 我们在本节的示例中添加了模块级的声明     private XmlDocument doc=new XmlDocument();

    如果这就是我们需要完成的工作 使用XmlReader加载列表框就是一种非常高效的方式 原因是我们只浏览一次文档 就完成了处理 这就是XmlReader的工作方式 但如果要重新查看某个节点 最好使用XmlDocument 扩展该示例 添加另一个事件处理程序(即DOMSample )     private void listBox _SelectedIndexChanged(object sender System EventArgs e)     {        //create XPath search string        string srch= bookstore/book[title= + listBox SelectedItem ToString()                                             + ] ;        //look for the extra data        XmlNode foundNode = doc SelectSingleNode(srch);        if(foundNode != null)           MessageBox Show(foundNode InnerText);        else           MessageBox Show( Not found );     }

    在这个示例中 与上一个示例一样 从books xml 文档中加载了带有标题的列表框 单击列表框 会引发SelectedIndexChanged()事件 获取列表框中所选项的文本(书名) 创建一个XPath 语句 把它传送给doc对象的SelectSingleNode() 方法 该方法返回title是书名的一部分的book元素(foundNode) 在消息框中显示节点的InnerText 继续单击列表框中的项目 此时文档已经加载 且一直到释放它之前 它都处于已加载状态      

    下面简要介绍一下SelectSingleNode()方法 它是XmlDocument类的Xpath实现 SelectSingleNode ()和 SelectNodes()都是在XmlNode中定义的 而XmlDocument是基于XmlNode的 SelectSingleNode()返回一个XmlNode SelectNodes()返回一个XmlNodeList System Xml XPath命名空间包含许多Xpath实现 后面的一节会介绍它们     插入节点

    前面的示例使用XmlTextWriter创建一个新文档 其局限性是不能把节点插入到当前文档中 而使用XmlDocument类可以做到这一点 把上一个示例中的button _Click()事件处理程序作如下改动(在下载代码的DOMSample 中)

lishixinzhi/Article/program/net/201311/14751

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/3979482.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-07
下一篇2024-04-07

发表评论

登录后才能评论

评论列表(0条)

    保存