VC++ 下使用 xml 文件导入导出数据

本文介绍了如何在VC++环境下利用XML进行数据的导入和导出。通过定义不同数据类型如INT, FLOAT, STR等,并实现ToXML方法,实现了数据到XML的转换。同时,使用IXMLDOMDocument接口解析XML文件,将数据加载到CCollectionType集合类中,简化了操作。" 114295379,10700328,Java字符流详解:编码解码与缓冲流,"['Java IO', '字符输入流', '字符输出流', '编码转换', '缓冲流']
摘要由CSDN通过智能技术生成

   XML (eXtensible Markup Language) 是一种简单的数据存储语言,使用一系列简单的标记描述数据,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。更重要的是,xml 可以描述非常复杂的数据结构,比如树状结构。

 

为了建立一个通用,易于扩展,易于使用的数据导入导出应用,首先得定义一些数据类型用于存储 int, float, string, array 等基本数据类型。

  

#pragma once

#include "Collection.h"

 

class CDataType

{

public:

       CString Id;

       CDataType(void) {}

       virtual ~CDataType() {}

       virtual char* GetTypeName() { return ""; }

       virtual int& Integer() { ::AfxThrowInvalidArgException(); }

       virtual float& Float() { ::AfxThrowInvalidArgException(); }

       virtual CString& String() { ::AfxThrowInvalidArgException(); }

       virtual CDataType& operator[](LPCTSTR key) { ::AfxThrowInvalidArgException(); }

       virtual CDataType& operator[](int index) {   ::AfxThrowInvalidArgException(); }

       virtual bool IsCollection() { return false; }

       virtual CString& ToXML(CString& s) { return s; }

};

 

class CIntegerType: public CDataType

{

       int    m_Object;

public:

       CIntegerType(int value) { m_Object = value; }

       virtual char* GetTypeName() { return "INT"; }

       virtual int& Integer() { return m_Object; }

       virtual CString& ToXML(CString& s) {

              s.Format("<INT ID=/"%s/" V=/"%d/" />", Id, m_Object);

              return s;

       }

};

 

class CFloatType: public CDataType

{

       float m_Object;

public:

       CFloatType(float value) { m_Object = value; }

       virtual char* GetTypeName() { return "FLOAT"; }

       virtual float& Float() { return m_Object; }

       virtual CString& ToXML(CString& s) {

              s.Format("<FLOAT ID=/"%s/" V=/"%g/" />", Id, m_Object);

              return s;

       }

};

 

class CStringType: public CDataType

{

       CString m_Object;

public:

       CStringType(LPCTSTR value) { m_Object = value; }

       virtual char* GetTypeName() { return "STR"; }

       virtual CString& String() { return m_Object; }

       virtual CString& ToXML(CString& s) {

              s.Format("<STR ID=/"%s/" V=/"%s/" />", Id, m_Object);

              return s;

       }

};

 

class CStringArrayType: public CDataType

{

       CArray<CString*, CString*> m_Object;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值