呵呵呵呵呵

萝莉有三好,柔体 轻音 易推倒。女神有三宝,干嘛 呵呵 去洗澡。宅男有三好:Dota 基友 破电脑。


BCB6 使用TXMLDocument读写xml文件和xml字符串

TXMLDocument位于Internet面板下,为了找到它,可真费了不少力气。

在BCB中一般采用TXMLDocument组件来进行XML文档的读写,该组件实际上默认调用微软的DOM(Document Object Model)进行操作。打开XMLDoc.hpp和XMLDOM.hpp文件,即可知他们实际上是

XMLDoc.pas和XMLDom.pas的Delphi实现的C++头文件。在XMLDoc.pas中,可以看到TXMLDocument是个多重继承类,TXMLDocument= class(TComponent, IInterface,

IXMLDocument,IXMLDocumentAccess),TXMLDocument实现了IXMLDocument接口。打开XMLIntf.hpp我们可以发现,__interface INTERFACE_UUID("{395950C3-7E5D-11D4-83DA-00C04F60B2DD}")

IXMLDocument: public IInterface,IXMLDocument已经实现了所有XML操作,TXMLDocument将一些public属性方法变为protected,并且继承自TComponent可以作为VCL组件来方便使用。

TXMLDocument也提供方法强制转化为IXMLDocument,IInterface等接口。事实上如果不需要使用VCL组件时候,完全可以直接使用IXMLDocument来操作XML文档。

前面都是虚的,后面看内容:

从文件中读入一个xml文件,如下所示:

void __fastcall TfrmMain::btnDocumentClick(TObject *Sender)
{
    TXMLDocument *docVideos = new TXMLDocument(frmMain);

    docVideos->LoadFromFile(L"C:\\Programs\\videos.xml");

    IXMLNode *nodVideo = docVideos->DocumentElement;
}

读入一个xml字符串,如下所示:

void __fastcall TForm1::btnDocumentClick(TObject *Sender)
{
    const AnsiString strXML = L"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
                  L"<musiccollection><album>"
                  L"<shelfnumber>FJ-7264</shelfnumber>"
                  L"<title>Symphony-Bantu</title>"
                  L"<artist>Vincent Nguini</artist>"
                  L"<copyrightyear>1994</copyrightyear>"
                  L"<publisher>Mesa Records</publisher></album>"
                  L"<album><shelfnumber>MR-2947</shelfnumber>"
                  L"<title>None</title><artist>Debbie Gibson</artist>"
                  L"<copyrightyear>1990</copyrightyear>"
                  L"<publisher>Atlantic</publisher>"
                  L"</album></musiccollection>";
    XMLDocument1->LoadFromXML(strXML);
}


也可以直接在构造函数的时候直接传入xml文件路径信息:

void __fastcall TfrmMain::btnDocumentClick(TObject *Sender)
{
    TXMLDocument *docMusic = new TXMLDocument(L"E:\\Programs\\music.xml");
}

下面这样也可以的:

void __fastcall TfrmMain::btnDocumentClick(TObject *Sender)
{
    TXMLDocument *docMusic = new TXMLDocument(this);

    docMusic->FileName = L"E:\\Programs\\music.xml";
}

需要注意的是,有时可能需要头文件:#include <XMLDoc.hpp>

上面的部分示例内容来自:http://www.functionx.com/cppbuilder/xml/Lesson01.htm

更多内容:

mysql-bin.0000格式文件说明
使用wireshark抓取127.0.0.1的流量
解决无法定位程序输入点@Idwinsock@initialization$qqrv于动态链接库 indy60.bpl上
彻底解决BCB6中Unable to open file INDY60.LIB错误
预编译#pragma hdrstop 作用

本文链接地址:http://www.hehehehehe.cn/i/24.html