增加mxml写入后的可读性
使用回调函数
在 mxmlSaveFile(root,fp,whitespace_cb1) 中最后一个参数为回调函数在其中进行设置,用四个值进行设置加空格还是回车换行。
- MXML_WS_BEFORE_OPEN;
- MXML_WS_BEFORE_CLOSE;
- MXML_WS_AFTER_OPEN;
- 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);
}