vc6如何读写xml
来源:互联网 发布:matlab画矩阵灰度图 编辑:程序博客网 时间:2024/05/11 13:53
在cpp中增加
#import "msxml.dll" rename_namespace("MSXML")
-----这几名一定要加否则报错,表示以COM形式调用所以要初始化一下COM----------
AfxEnableControlContainer();
::AfxOleInit();
::CoInitialize(NULL);
因为是com操作,所以一开始有个引入
#include "msxml.h"
#import "C:/windows/system32/msxml.dll" rename_namespace("xml")
以及声明com
AfxEnableControlContainer();
::AfxOleInit();
::CoInitialize(NULL);
--------------------------------------------
//初始MSXML智能指针
MSXML::IXMLDOMDocumentPtr doc=NULL;
MSXML::IXMLDOMElementPtr ele=NULL;
MSXML::IXMLDOMNodePtr Node=NULL, NodeTable=NULL, NodeField=NULL;
hr=doc.CreateInstance(_T("MSXML.domdocument"));
if(FAILED(hr)) {
//Error(_T("MSXML not installed!"));
SetState(dmstNormal);
return FALSE;
}
//load from file or buf
if(bFromFile) {
if(doc->load(filename)==VARIANT_FALSE) {
doc=NULL;
s.Format(_T("XML File %s not found"), (_bstr_t)filename);
Error(s);
SetState(dmstNormal);
return FALSE;
}
}
else doc->loadXML(xml);
//根元素
ele=doc->documentElement;
if(ele==NULL)
{
SetState(dmstNormal);
return TRUE;
}
//逐个表元素
for(NodeTable=ele->firstChild; NodeTable!=NULL; NodeTable=NodeTable->nextSibling) {
TableName=(LPCTSTR)NodeTable->nodeName;
//if(CPub::ArrayCompareNoCase(arrTable, TableName)==-1) continue;
row=InsertRow(bAsNew);
//逐个字段
for(NodeField=NodeTable->firstChild; NodeField!=NULL; NodeField=NodeField->nextSibling) {
FieldName=(LPCTSTR)NodeField->nodeName;
if(FieldName.Find(_T("."))==-1 && TableName.IsEmpty()==FALSE)
FieldName=/*TableName +_T(".")+*/ FieldName;
col=GetFieldIndex(FieldName);
if(col==-1) continue;
//Data
//datatype=GetColDataType(col);
Data=(LPCTSTR)NodeField->text;
/*if(datatype==DATATYPE_DATETIME) {
Data.Replace(_T('T'), _T(' '));
if(Data.GetLength()>19) Data=Data.Left(19);
}
CDataTableStatic::SetData(row, col, Data);*/
if(GetFieldType(col) == ftDateTime)
{
tempDT.ParseDateTime(Data);
if ((tempDT.GetStatus() == COleDateTime::invalid)&&Data.GetLength() > 0)
{
tempDT = CPub::CString2COleDateTime(Data);
//tempDT = dt1;
Data = tempDT.Format();
}
}
this->SetAsString(col,row,Data);
}
}
doc=NULL;
ele=NULL;
Node=NULL;
NodeTable=NULL;
NodeField=NULL;
SetState(dmstNormal);
return TRUE;
#import "msxml.dll" rename_namespace("MSXML")
-----这几名一定要加否则报错,表示以COM形式调用所以要初始化一下COM----------
AfxEnableControlContainer();
::AfxOleInit();
::CoInitialize(NULL);
因为是com操作,所以一开始有个引入
#include "msxml.h"
#import "C:/windows/system32/msxml.dll" rename_namespace("xml")
以及声明com
AfxEnableControlContainer();
::AfxOleInit();
::CoInitialize(NULL);
--------------------------------------------
//初始MSXML智能指针
MSXML::IXMLDOMDocumentPtr doc=NULL;
MSXML::IXMLDOMElementPtr ele=NULL;
MSXML::IXMLDOMNodePtr Node=NULL, NodeTable=NULL, NodeField=NULL;
hr=doc.CreateInstance(_T("MSXML.domdocument"));
if(FAILED(hr)) {
//Error(_T("MSXML not installed!"));
SetState(dmstNormal);
return FALSE;
}
//load from file or buf
if(bFromFile) {
if(doc->load(filename)==VARIANT_FALSE) {
doc=NULL;
s.Format(_T("XML File %s not found"), (_bstr_t)filename);
Error(s);
SetState(dmstNormal);
return FALSE;
}
}
else doc->loadXML(xml);
//根元素
ele=doc->documentElement;
if(ele==NULL)
{
SetState(dmstNormal);
return TRUE;
}
//逐个表元素
for(NodeTable=ele->firstChild; NodeTable!=NULL; NodeTable=NodeTable->nextSibling) {
TableName=(LPCTSTR)NodeTable->nodeName;
//if(CPub::ArrayCompareNoCase(arrTable, TableName)==-1) continue;
row=InsertRow(bAsNew);
//逐个字段
for(NodeField=NodeTable->firstChild; NodeField!=NULL; NodeField=NodeField->nextSibling) {
FieldName=(LPCTSTR)NodeField->nodeName;
if(FieldName.Find(_T("."))==-1 && TableName.IsEmpty()==FALSE)
FieldName=/*TableName +_T(".")+*/ FieldName;
col=GetFieldIndex(FieldName);
if(col==-1) continue;
//Data
//datatype=GetColDataType(col);
Data=(LPCTSTR)NodeField->text;
/*if(datatype==DATATYPE_DATETIME) {
Data.Replace(_T('T'), _T(' '));
if(Data.GetLength()>19) Data=Data.Left(19);
}
CDataTableStatic::SetData(row, col, Data);*/
if(GetFieldType(col) == ftDateTime)
{
tempDT.ParseDateTime(Data);
if ((tempDT.GetStatus() == COleDateTime::invalid)&&Data.GetLength() > 0)
{
tempDT = CPub::CString2COleDateTime(Data);
//tempDT = dt1;
Data = tempDT.Format();
}
}
this->SetAsString(col,row,Data);
}
}
doc=NULL;
ele=NULL;
Node=NULL;
NodeTable=NULL;
NodeField=NULL;
SetState(dmstNormal);
return TRUE;
- vc6如何读写xml
- C#如何读写XML文件?
- c#如何读写xml文件
- JAVA如何读写XML文档
- C#如何读写xml文件
- c#如何读写xml文件
- C#如何读写xml文件
- C#如何读写xml文件
- C#如何读写xml文件
- C#如何读写xml文件
- Unity3d如何读写XML文件
- 如何使用dom4j如何读写xml文件
- 如何将对象读写到 XML 中
- LINQ to XML:如何读写XCData
- windows mobile 如何读写XML文档 1
- 在VC.net如何读写XML
- Android Java 如何读写XML文件
- asp.net如何读写xml文件
- MFC_Doc,View,MainFrmae,App各指针的互相获取
- 九周任务1
- 淘宝的KV存储系统的设计思路总结-tair系统
- 日期时间的格式化符号
- 使用eclipse开发linux驱动
- vc6如何读写xml
- 九周任务四:数组类
- 一日一点RakNet(35)--Directory Delta Transfer
- 用命令行运行单元测试
- VC6.0编译器参数设置说明
- “android源码目录”/mediatek/source/frameworks路径下的源文件编译
- JVM运行情况分析
- 获取SIM/UIM卡的联系人容量及已用容量信息
- 开源搜索引擎