利用BCB+MsxmlV3.0讀取XML各層Nodes資料時發生的錯誤 |
答題得分者是:RaynorPao
|
moli1943
一般會員 發表:9 回覆:18 積分:5 註冊:2003-07-09 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
loveloser1
一般會員 發表:0 回覆:1 積分:0 註冊:2003-11-29 發送簡訊給我 |
_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
.....
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |