增加mxml写入后的可读性

增加mxml写入后的可读性

使用回调函数

mxmlSaveFile(root,fp,whitespace_cb1) 中最后一个参数为回调函数在其中进行设置,用四个值进行设置加空格还是回车换行。

  1. MXML_WS_BEFORE_OPEN;
  2. MXML_WS_BEFORE_CLOSE;
  3. MXML_WS_AFTER_OPEN;
  4. MXML_WS_AFTER_CLOSE;
    在这里插入图片描述

上图就是调整mxml格式的位置.

const char * whitespace_cb1(mxml_node_t *node, int where)
{
  const char *name;

 /*
  * We can conditionally break to a new line
  * before or after any element. These are
  * just common HTML elements...
  */

  name = mxmlGetElement(node);
  bool is_before_open  = where == MXML_WS_BEFORE_OPEN;
  bool is_before_close = where == MXML_WS_BEFORE_CLOSE;
  bool is_after_open   = where == MXML_WS_AFTER_OPEN;
  bool is_after_close   = where == MXML_WS_AFTER_CLOSE;

  {
      if (!strcmp(name, "EtherCATInfoList") && (is_before_open ||is_before_close ) )
      {
          return ("\n");
      }
      if (!strcmp(name, "EtherCATInfo")&& (is_before_open ||is_before_close||is_after_open ) )
      {
          return ("\n ");
      }

      if (!strcmp(name, "Descriptions") && (is_before_open ||is_before_close ))
      {
          return ("\n  ");
      }
      if (!strcmp(name, "Vendor")&& (is_before_open || is_before_close) )
      {
          return ("\n  ");
      }
      if (!strcmp(name, "Id") && (is_before_open /*||is_after_close */))
      {
          return ("\n   ");
      }
      if (!strcmp(name, "Devices")&& (is_before_open ||is_before_close ) )
      {
          return ("\n   ");
      }
      if (!strcmp(name, "Device")&& (is_before_open ||is_before_close ) )
      {
          return ("\n    ");
      }
      if (!strcmp(name, "Type")&& (is_before_open ) )
      {
          return ("\n     ");
      }
      if (!strcmp(name, "Sm") )
      {
          if(is_before_open )
              return ("\n     ");
//          if(is_after_open)
//          {
//              return ("\t    ");
//          }
      }
      if (!strcmp(name, "TxPdo") && (is_before_open ||is_before_close ))
      {
          return ("\n     ");
      }

      if (!strcmp(name, "RxPdo") && (is_before_open ||is_before_close ))
      {
          return ("\n     ");
      }
      if (!strcmp(name, "Entry") )
      {
          if(is_before_open ||is_before_close)
            return ("\n      ");
      }
      if(!strcmp(name, "Index")&& (is_before_open ))
      {
          mxml_node_t *parent = mxmlGetParent(node);
          if(!strcmp(mxmlGetElement(parent),"Entry"))
          {
              return "\n         ";
          }
          else
          {
              return ("\n      ");
          }
      }
      if (!strcmp(name, "Name"))
      {
          mxml_node_t *parent = mxmlGetParent(node);
          if(is_before_open)
          {
              if(!strcmp(mxmlGetElement(parent),"Entry"))
              {
                  return "\n         ";
              }
              else if(!strcmp(mxmlGetElement(parent),"Device"))
              {
                  return ("\n     ");
              }
              return ("\n      ");
          }
//          else if(is_after_close)
//          {
//              if(!strcmp(mxmlGetElement(parent),"Device"))
//              {
//                  return ("\n     ");
//              }
//          }
      }
      if((!strcmp(name, "SubIndex") || !strcmp(name, "BitLen")||!strcmp(name, "DataType"))&& (is_before_open ))
      {
          return "\n         ";
      }
  }


  return (NULL);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值