C++实现简单XML写功能实例

这篇博客介绍了如何在C++中实现简单的XML写功能,提供了创建XML结构和保存到文件的示例代码,适用于需要快速搭建XML写操作的场景。示例结构包括根节点和子节点,但不支持属性。
摘要由CSDN通过智能技术生成

由于项目需要,实现个简单结构的XML的写操作,随手记录一下,以便背忘及有助其他人参考吧,有兴趣的话,可以扩展功能。

结构例子如下:(目前不支持属性)

<root>

<node>value</node>

</root>

具体代码如下

#pragma once


// XML Attribute
struct XmlAttribute
{
	CString strName;
	CString strValue;
	XmlAttribute(){
		strName = L"";
		strValue= L"";
	};
};


struct XmlNode
{
	CString        strName;
	CString        strValue;
	XmlNode      * pChildRoot;
	XmlAttribute * pAttrRoot;
	XmlNode      * pNextNode;

	XmlNode(){
		strName         = L"";
		strValue        = L"";
		pChildRoot      = NULL;
		pAttrRoot       = NULL;
		pNextNode       = NULL;
	};
	~XmlNode(){
		if (pChildRoot != NULL)
		{
			delete pChildRoot;
			pChildRoot = NULL;
		}
		if (pNextNode != NULL)
		{
			delete pNextNode;
			pNextNode = NULL;
		}
	};
};


class CXmlDom
{
public:
	CXmlDom(void);
	~CXmlDom(void);

    void AddRoot(const CString & rootName);
	void AddNode(const CString & parentName, XmlNode * childNode);
	BOOL Save(const CString & strFile);
	BOOL FindSameNodeExsit(const CString &parentName, XmlNode * curNode);

protected:
	XmlNode * m_pRootNode;
	void DeleteNode(XmlNode * );
	CString m_strIndentationUnit;
	BOOL OutNode(HANDLE hFile, XmlNode * pParent, int level, char * ,char * , int & );
	XmlNode * FindAddNodeParent(const CString & strName, XmlNode * pCurNode);
};


#include "StdAfx.h"
#include "XmlDom.h"
#include "Util.h"

CXmlDom::CXmlDom(void)
{
	m_pRootNode = NULL;
	m_strIndentationUnit = L"    ";
}

CXmlDom::~CXmlDom(void)
{
	if (m_pRootNode != NULL)
	{
		delete m_pRootNode;
	}
}

// -------------------------------------------------------------------------
// RELEASE
// -------------------------------------------------------------------------
void CXmlDom::Delete
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值