全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1842
推到 Plurk!
推到 Facebook!

利用BCB+MsxmlV3.0讀取XML各層Nodes資料時發生的錯誤

答題得分者是:RaynorPao
moli1943
一般會員


發表:9
回覆:18
積分:5
註冊:2003-07-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-15 17:22:14 IP:211.22.xxx.xxx 未訂閱
Hi大家好:   我就不再說客套話了,直接進入主題. 我最近在寫讀取XML檔資料的程式(bcb+msxmlV3.0),程式要讀取檔案中所有node的名稱及其data, 我搜尋了相關文章就是找不到bcb的完整範例, 於是自己拼拼湊湊寫了一個小小程式, 但是出了問題想請教大家, 我的問題是程式可正確讀取到root node的名稱及data, 但繼續讀下一層就會出現error, 我嘗試只讀node的名稱不讀取data則可正確讀出所有各層nodes的名稱,以下是我的程式, 請大家幫幫忙看看錯在哪裡, 感謝, 感謝!!
 
void __fastcall TFormMain::Button1Click(TObject *Sender)
{
  int nodelength;
  TCOMIXMLDOMDocument myXML;
  myXML = CoDOMDocument::Create();
  myXML->load(xmlfilename);      IXMLDOMNodeListPtr CNList;
  CNList = myXML->documentElement->childNodes;
  GetNodeData(CNList);
}
//--------------------------------------------------------------
void __fastcall TFormMain::GetNodeData(IXMLDOMNodeListPtr CNList)
{
   IXMLDOMNodePtr n;
   for (int i = 0; i < CNList->length; i  )
       {
         n = CNList->get_item(i);           //取出個別的 Child Node。
         ListBox1->Items->Add(n->nodeName); //取出該Node名稱。
         ListBox1->Items->Add(n->attributes->get_item(i)-
                              Text);        //取出該Node資料。
                                            //如果不讀值,將此行去除則
                                            //可正確執行             GetNodeData(n->childNodes);        //遞迴取出底下node的data
       }
} 
發表人 -
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-15 23:07:28 IP:61.221.xxx.xxx 未訂閱
引言: Hi大家好: 我就不再說客套話了,直接進入主題. 我最近在寫讀取XML檔資料的程式(bcb msxmlV3.0),程式要讀取檔案中所有node的名稱及其data, 我搜尋了相關文章就是找不到bcb的完整範例, 於是自己拼拼湊湊寫了一個小小程式, 但是出了問題想請教大家, 我的問題是程式可正確讀取到root node的名稱及data, 但繼續讀下一層就會出現error, 我嘗試只讀node的名稱不讀取data則可正確讀出所有各層nodes的名稱,以下是我的程式, 請大家幫幫忙看看錯在哪裡, 感謝, 感謝!! void __fastcall TFormMain::Button1Click(TObject *Sender) { int nodelength; TCOMIXMLDOMDocument myXML; myXML = CoDOMDocument::Create(); myXML->load(xmlfilename); IXMLDOMNodeListPtr CNList; CNList = myXML->documentElement->childNodes; GetNodeData(CNList); } //-------------------------------------------------------------- void __fastcall TFormMain::GetNodeData(IXMLDOMNodeListPtr CNList) { IXMLDOMNodePtr n; for (int i = 0; i < CNList->length; i ) { n = CNList->get_item(i); //取出個別的 Child Node。 ListBox1->Items->Add(n->nodeName); //取出該Node名稱。 ListBox1->Items->Add(n->attributes->get_item(i)- Text); //取出該Node資料。 //如果不讀值,將此行去除則 //可正確執行 GetNodeData(n->childNodes); //遞迴取出底下node的data } } < face="Verdana, Arial, Helvetica"> moli1943 你好: 請參考以下的連結文章
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
moli1943
一般會員


發表:9
回覆:18
積分:5
註冊:2003-07-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-16 08:56:02 IP:61.221.xxx.xxx 未訂閱
謝謝版主的回應, 不過我看的實在有點給他霧煞煞, 還有沒有白話一點的範例?
loveloser1
一般會員


發表:0
回覆:1
積分:0
註冊:2003-11-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-13 11:23:28 IP:211.22.xxx.xxx 未訂閱
_di_IXMLDocument XMLDocument1=NewXMLDocument(); XMLDocument1->LoadFromFile(WideString(OpenDialog1->FileName)); _di_IXMLNodeList nodelist1=XMLDocument1->GetChildNodes();//Root Element int BLListCount=nodelist1->GetCount(); _di_IXMLNode node1 =nodelist1->Get(1);//Use For loop to find all Child Element AnsiString Traffic_No,BL_NO,Traffic_Model_Code; Traffic_Model_Code =AnsiString(node1->Attributes[WideString("Traffic_Model_Code")]);//Get Attribute _di_IXMLNodeList nodelist2 = node1->GetChildNodes();//Next Level Elements BLListCount = nodelist2->Count;//The count of Next level Elements .....
系統時間:2024-05-12 20:32:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!