• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 64, 文章 - 11, 評論 - 12, 引用 - 0
            數(shù)據(jù)加載中……

            XmlDom 用法小談

            XmlDOM  用法小談

                    今天,我覺得自己的情緒不夠好,我看他們的設(shè)計太不考慮性能方面的問題。而一味地講究不要冗余,是啊教科書上也老是說數(shù)據(jù)庫的設(shè)計要達(dá)到什么樣的標(biāo)準(zhǔn)。我個人卻老是覺得對適當(dāng)?shù)赜萌哂嗄軗Q來大的性能提升是很有幫助的。我這個人過于死板了些吧?所以把這種情緒帶進(jìn)了工作,覺得很是不該。開篇寫了題外話。

                    前兩天我設(shè)計了一個頁面,這是一個多級聯(lián)動的頁面,當(dāng)選了項目后,項目后面的單元格中的下拉框中出現(xiàn)與這個項目對應(yīng)的方法,方法過后則是出現(xiàn)儀器,項目還聯(lián)動著標(biāo)準(zhǔn)。當(dāng)初考慮性能上的問題我在這個頁面中采用了AJAX(AjaxPro)技術(shù),經(jīng)過使用發(fā)現(xiàn)了其中的一個很嚴(yán)重的錯誤(程序員愛把它稱為BUG,但我認(rèn)為沒有滿足要求的就是錯誤)。當(dāng)點了一單元格時,會異步回到服務(wù)端拿數(shù)據(jù),而在這期間用戶是可以點其它的地方,這時候返回來的數(shù)據(jù)只會寫在當(dāng)前活動的單元格中,但這時活動的單元格卻早已不是源目標(biāo)了。所以出現(xiàn)了這個難以忍受的錯誤。我們不能要求或者假設(shè)用戶不以很快的類似玩游戲的速度來操作MOUSE。所以我的這個設(shè)計構(gòu)想是錯誤的。

                    鑒于上面的原因,我決定對頁面做如下的修改。在載入頁之初,就通過服務(wù)端預(yù)期地把這個數(shù)據(jù)組強(qiáng)成XML文件放到頁面上去,而頁面單擊找數(shù)據(jù)也就在客戶端可以完成。這樣就會大提高反應(yīng)的速試了,也不會出現(xiàn)前面說的在這個異步的過程中客戶的操作而引發(fā)錯誤。

                  在服務(wù)端的工作(這是C#做的):我先把數(shù)據(jù)組織成XML文件,進(jìn)而把它放在頁面上。在服務(wù)端我采用了XmlWritter這個類。用法如下
            StringBuilder sb=new StringBuilder();
                    XmlWriterSettings settings 
            = new XmlWriterSettings();
                    settings.Indent 
            = true;
                    settings.OmitXmlDeclaration 
            = true;
                    settings.NewLineOnAttributes 
            = false;
                    _writer 
            = XmlWriter.Create(sb,settings);
            _writer.WriteStartDocument();

                   在上面我們就構(gòu)造好了XML寫入器了。而在以下就只要調(diào)用下面幾個方法就可以了。
            _writer.WriteStartElement("ITEMS");
            _writer.WriteStartElement(
            "ITEM");
            _writer.WriteAttributeString(
            "ID","10");
            _writer.WriteAttributeString(
            "Name","PH");
            _writer.WriteEndElement();
            _writer.WriteFullEndElement()

            //產(chǎn)生出來的樣子
            <ITEMS>
               
            <ITEM ID="10" Name="PH"/>
            </ITEMS>
                    好了上面的代碼可以讓我產(chǎn)生出一個XML來了。

                   上面準(zhǔn)備好服務(wù)端,現(xiàn)在我得開始客戶端了。這里我用到了IE瀏覽器中的XMLDOM這個組件了,在別的瀏覽器中也有另處的DOM組件的,其操作和語法甚至函數(shù)上都有很大相同的了。
            xmlDom=new ActiveXObject("MSXML2.DOMDocument");
            xmlDom.loadXML(strXml);//這是一個字符串
            var root=xmlDom.selectSingleNode("ITEMS");
            var items=root.selectNodes("ITEM");//找ROOT下所有的ITEM子節(jié)點。
            var item=root.selectSingleNode("ITEM[@id=10]");//則是找其下一個ITEM其ID屬性為10了。
            關(guān)于XQL的語法,我在有空時會以一個短文來說一說的了。

            posted on 2007-11-09 17:17 Robertxiao 閱讀(483) 評論(0)  編輯 收藏 引用 所屬分類: 天馬行空

            天天躁日日躁狠狠久久| 伊人久久大香线蕉综合5g| 久久婷婷激情综合色综合俺也去| 影音先锋女人AV鲁色资源网久久| 99久久99久久精品免费看蜜桃| 国产91色综合久久免费| 久久久久这里只有精品| 亚洲中文字幕久久精品无码APP | 97久久精品人人做人人爽| 精品久久国产一区二区三区香蕉| 久久久久久久久久久| 久久亚洲国产欧洲精品一| 狠狠色婷婷久久一区二区| 色综合久久最新中文字幕| 中文字幕久久精品无码| 色婷婷噜噜久久国产精品12p| 国内精品伊人久久久久AV影院| 少妇被又大又粗又爽毛片久久黑人 | 久久99国产精品久久99果冻传媒| 日批日出水久久亚洲精品tv| 99久久精品无码一区二区毛片 | 久久精品国产只有精品66| 久久久久久久久无码精品亚洲日韩 | 欧美亚洲国产精品久久久久| 国产精品视频久久久| 久久综合亚洲欧美成人| 亚洲欧美日韩久久精品第一区| 久久久久亚洲av毛片大| 狠狠精品干练久久久无码中文字幕| 99精品久久精品| 精品国产乱码久久久久久郑州公司 | 久久超碰97人人做人人爱| 国产69精品久久久久久人妻精品| 狠狠色综合网站久久久久久久| 久久99国产精品二区不卡| 久久久久99精品成人片直播| 久久无码AV一区二区三区| 久久久久亚洲AV无码观看| 久久久久亚洲av成人网人人软件 | 国产国产成人精品久久| 国产三级久久久精品麻豆三级|