CMarkup类(First Objective Software)是一个很好的XML操作工具类,目前免费版更新到11.5(2011年),但很遗憾没有提供自动缩进功能。网上很早就有了实现缩进的改进代码,本人通过对源代码的研究实现了一个自动缩进的新方法,此方法比目前网上的要简单的多。
在CMarkup.h中添加以下新public函数,另外也建议加宏#define MARKUP_EOL_NONE,以便新建XML时m_strDoc中不加入回车符,这样生成的缩进效果更好(代码中有两行是特为MFC而加入的优化代码,有兴趣的可以使用)。
MCD_STR GetIndentDoc();
bool SaveIndent( MCD_CSTR_FILENAME szFileName );
在CMarkup.cpp文件尾添加以下代码。
#define x_INDENT MCD_T(" ") // 也可以是 MCD_T('\t')
MCD_STR CMarkup::GetIndentDoc()
{
int iStack[64];
iStack[0] = ELEM(0).iElemChild;
if (!iStack[0])
return MCD_T("");
MCD_STR strIndentDoc, strFront, strEndTag;
bool