mini-xml换行
来源:互联网 发布:bf算法改良 编辑:程序博客网 时间:2024/05/21 17:55
这个问题困扰了我有一些天,由于当时不用换行也行,就那么用了,但是用wireshark抓包,都在一行看起来实在不友好,过了一些天再看用户手册发现了奥秘,感觉手册写了不太清楚。
如果不加换行会是<?xml version="1.0" encoding="utf-8"?><Action><Notify><Variable>KeepAlive</Variable></Notify></Action>
加了换行直观了许多
<?xml version="1.0" encoding="utf-8"?>
<Action><Notify>
<Variable>KeepAlive</Variable>
</Notify>
</Action>
手册中有第三章的“保存回调”中有介绍:
mxmlSaveFile() , mxmlSaveString() , 和mxmlSaveAllocString() 函数。这些函数的最后一个参数是一个回调函数被用来自动在一个XML 文档中添加字符。
回调函数是什么样子呢?手册中也有介绍:
const char *whitespace_cb(mxml_node_t *node ,int where)
{
const char *name;
name = node->value.element.name;
if (!strcmp(name, "html") ||!strcmp(name, "head") ||!strcmp(name, "body") ||!strcmp(name, "pre") ||!strcmp(name, "p") ||!strcmp(name, "h1") ||!strcmp(name, "h2") ||!strcmp(name, "h3") ||!strcmp(name, "h4") ||!strcmp(name, "h5") ||!strcmp(name, "h6"))
{
if (where == MXML_WS_BEFORE_OPEN ||where == MXML_WS_AFTER_CLOSE)
return ("\n");
}
else if (!strcmp(name, "dl") ||!strcmp(name, "ol") ||!strcmp(name, "ul"))
{
return ("\n");
}
else if (!strcmp(name, "dd") ||!strcmp(name, "dt") ||!strcmp(name, "li"))
{
if (where == MXML_WS_BEFORE_OPEN)
return ("\t");
else if (where == MXML_WS_AFTER_CLOSE)
return ("\n");
}
return (NULL);
}
一看限定的条件太多了,我的程序没初始化一些参数,所以按照上面的程序执行不好使还是没有换行
我把手册的程序裁剪了下:
const char *whitespace_cb(mxml_node_t *node ,int w)
{
if ( w==MXML_WS_BEFORE_OPEN || w == MXML_WS_AFTER_CLOSE )
return ("\n");
else
return NULL;
}
这就好理解了,手册说:你的回调函数将在每个XML 元素被调用四次,传入参数为一个到这个节点的指针和一个"where" 的值:
MXML_WS_BEFORE_OPEN , MXML_WS_AFTER_OPEN ,MXML_WS_BEFORE_CLOSE , 或者MXML_WS_AFTER_CLOSE
选择第一个和第四个就能形成xml元素换行。
回调函数直接写在mxmlSaveFile() 或 mxmlSaveString() 或mxmlSaveAllocString() 函数的最后一个参数就可以了
eg:
mxmlSaveAllocString(xml, whitespace_cb);
另外mini-xml用户手册在我的资源共享中。
- mini-xml换行
- mini-XML 中文文档
- Mini-XML学习
- mini-XML 中文文档
- mini-XML 中文文档
- Mini-XML的使用手册
- Mini-XML学习笔记
- mini-XML 中文文档
- mini-XML 中文文档
- mini-XML 中文文档
- mini xml解析流程
- XML换行
- Mini-XML入门基础 Getting Started with Mini-XML c
- mini-xml(mxml)开发手册--Mini-XML 入门
- libmxml (Mini-XML) 函数解析
- C++ XML解析 使用Mini-XML
- python3 xml.dom.mini模块解析xml
- mini-xml(mxml)开发手册--目录
- Readline的理解
- MyEclipse8.6注册码源码
- 2-1.SQLite数据库
- 十三周——Fibnacci(迭代版)(任意位置)
- c++学习之--排序5-堆排序
- mini-xml换行
- C#
- android--基于wifi的手机遥控器--笔记1
- 2-2.网络传送数据
- 低版本MySql使用GROUP_CONCAT函数的陷阱
- 十三周——fibnacci(递归版)
- 算法学习小结
- windows下python+django+pycharm环境配置
- Android 数据存储与读取:SQLite