MXML保存时格式化XML详细

参考:https://blog.csdn.net/whymewuxian/article/details/16866489?utm_source=blogxgwz7

           https://blog.csdn.net/zerolity/article/details/70892705?utm_source=blogxgwz6

关于格式化XML文件,主要通过四个参数MXML_WS_BEFORE_OPEN、MXML_WS_BEFORE_CLOSE、MXML_WS_AFTER_OPEN和MXML_WS_AFTER_CLOSE进行控制。

以实际例子进行说明

<?xml version="1.0" encoding="UTF-8"?>

<action>

        <tmp>sample</tmp>

        <str>strstr</str>

</action>

在保存到文件时,使用mxmlSaveFile函数,函数的第三个参数是一个回调函数,定义为

const char *whitespace_cb(mxml_node_t *node, int where)

其中where的取为MXML_WS_BEFORE_OPEN、MXML_WS_BEFORE_CLOSE、MXML_WS_AFTER_OPEN和MXML_WS_AFTER_CLOSE。

这四个参数分别代表一行XML的四个位置,以<tmp>sample</tmp>进行说明:

MXML_WS_BEFORE_OPEN代表<tmp>的前面,可以是'\t”或“\n"

MXML_WS_BEFORE_CLOSE代表<tmp>的后面,可以是"\n"

MXML_WS_AFTER_OPEN代表</tmp>的前面,可以是”\n"

MXML_WS_AFTER_CLOSE代表</tmp>的后面,可以是"\n"

在mxmlSaveFile函数保存文件时,每个名称会调用四次,分别传如上面的四个参数。以上面的例子为例进行格式化,代码如下:

const char *whitespace_cb(mxml_node_t *node, int where)

{

        const char *name;

        name=mxmlGetElement(node);

      if(strcmp(name, "action") == 0x0)

      {

               if((where == MXML_WS_BEFORE_OPEN) || (where == MXML_WS_AFTER_OPEN))
              {
                    return ("\n");
               }

       }

       else

        if(strcmp(name, "?xml version=\"1.0\" encoding=\"UTF-8\"?"))
        {
            if(where == MXML_WS_BEFORE_OPEN)
            {
                return ("\t");
            }
            if((where == MXML_WS_AFTER_CLOSE))
            {
                return ("\n");
            }
        }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值