xml按指定语句拆分

cartergj 2016-03-15 03:49:16
现有一个xml文件如下,本身是由很多个完整的xml文件构成:
<?xml version="1.0" encoding="utf-8"?>
<Response>
<Item> 内容略 </Item>
</Response>
<?xml version="1.0" encoding="utf-8"?>
<Response>
<Item> 内容略 </Item>
</Response>
<?xml version="1.0" encoding="utf-8"?>
<Response>
<Item> 内容略 </Item>
</Response>
。。。很多个

要拆分成一个一个的完整的子文件,
<?xml version="1.0" encoding="utf-8"?>
<Response>
<Item> 内容略 </Item>
</Response>

我的想法是按行来拆分,当读到</Response> 就将前面读到的内容存起来,然后送给xml库去解析。

怎么来拆分,数据怎么保存,求大神给个代码看看 用C/C++实现。
...全文
130 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
super_admi 2016-03-16
  • 打赏
  • 举报
回复
使用Response节点来分是不对的,除非你真的能确定它是root,否则人家改个名字,你就抓瞎了。 从你目前的规则来看,要分的话,基于两点: 1.<?xml?>标志 2.根节点
赵4老师 2016-03-16
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
char s[]=
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<Response>"
"<Item>   内容1略 </Item>"
"</Response>"
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<Response>"
"<Item>   内容2略 </Item>"
"</Response>"
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<Response>"
"<Item>   内容3略 </Item>"
"</Response>";
char *p,*q,c,L;
char gap[80]="</Response>";
int i;
int main() {
    L=strlen(gap);
    q=s;
    i=0;
    while (1) {
        p=strstr(q,gap);
        if (p) {
            c=p[L];
            p[L]=0;
            printf("%d [%s]\n",i,q);
            i++;
            p[L]=c;
            q=p+L;
        } else break;
    }
    return 0;
}
//0 [<?xml version="1.0" encoding="utf-8"?><Response><Item>   内容1略 </Item></Response>]
//1 [<?xml version="1.0" encoding="utf-8"?><Response><Item>   内容2略 </Item></Response>]
//2 [<?xml version="1.0" encoding="utf-8"?><Response><Item>   内容3略 </Item></Response>]
//
cartergj 2016-03-15
  • 打赏
  • 举报
回复
大神能不能给个示例代码,小弟新手,非常感谢
dustpg 2016-03-15
  • 打赏
  • 举报
回复
数据不用保存,C++的库一般有两个参数,一个是begin, 一个是end。 如果你用的C++库只有一个字符串参数,辣鸡库,换一个(或者用std::string中转一下)。 遍历完一个xml, 送到解析器里面就行了。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧