c语言 自己编程解析 xml,C语言解析.XML文件

c语言 自己编程解析 xml,C语言解析.XML文件最近手头上有个活在忙,中间很重要的一部分就是用C语言将.XML文件中想要的key和value读出来,与之前已有的值进行比较。核心的.XML文件的格式如下:zzzxxxyyy而我的思路是这样的:1.将整个文件读到一个buf中;2.去掉不需要的头部分;(xml?>)3.采用下降递归的方法,获取到每一个人tag和content;其中用到的结构体有:typedefstructXM…

大家好,又见面了,我是你们的朋友全栈君。

最近手头上有个活在忙,中间很重要的一部分就是用C语言将.XML文件中想要的key和value读出来,与之前已有的值进行比较。

核心的.XML文件的格式如下:

zzz

xxx

yyy

而我的思路是这样的:

1.将整个文件读到一个buf中;

2.去掉不需要的头部分;( xml ?>)

3.采用下降递归的方法,获取到每一个人tag 和 content;

其中用到的结构体有:

typedef struct XML_SEGMENT{

char *str;

int len;

}XML_SEGMENT;

typedef enum{

XML_ELEMENT_CONTENT=1,XML_TEXT_CONTENT,XML_DECLARE_CONTENT

}xml_content_t;

typedef struct{

XML_ATTR_PAIR *array;

int cnt;

}XML_ATTRIBUTE;


typedef struct XML_LIST{

XML_SEGMENT tagname;

XML_ATTRIBUTE attr;

XML_SEGMENT content;

xml_content_t type;

XML_SEGMENT realm;

int depth;

struct XML_LIST *parent;

struct XML_LIST *first_child;

struct XML_LIST *prev_sibling;

struct XML_LIST *next_sibling;

}XML_LIST;

总结

以上是编程之家为你收集整理的C语言解析.XML文件全部内容,希望文章能够帮你解决C语言解析.XML文件所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157880.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Unity3D ML-Agent-0.8.1 学习四(模仿学习)

    Unity3D ML-Agent-0.8.1 学习四(模仿学习)Unity3DMl-Agent-0.8.1学习四(模仿学习)写的目的场景设置修改配置并训练总结写的目的本篇介绍模仿学习,即玩家边玩,代理边学习,主要分为在线学习和离线学习,在线就是跟着师傅一起学,离线就是看是师傅录制的资料学习,我们主要讲在线学习,就是玩家边玩,AI边学习,可以实时观察学习的效果,离线学习只是记录玩家信息,产生生成一个文件,命令行学习文件即可,不多做介绍。场景设置可以…

    2022年9月16日
    0
  • idea激活码网站【最新永久激活】

    (idea激活码网站)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月31日
    72
  • String字符串转JSONArray

    String字符串转JSONArrayStringmarString=request.getParameter(“params”);JSONArrayjsonArray=JSONArray.fromObject(marString);if(jsonArray!=null&&jsonArray.size()>0){for(inti=0;i

    2022年6月20日
    75
  • ios 越狱 真机调试

    ios 越狱 真机调试开发环境:Xcode4.5.2ios设备需要越狱并从Cydia安装appsync安装appsync步骤:1、找到安装的cydia,第一次运行将会弹出提示,选择开发者即可2、在工具栏中选择软件源(iphone/itouch选管理),然后点右上角的编辑3、点左上角添加4、输入源:http://yuan.duowan.com/(多玩的源),点添加源,等待添加完成,然后点返回C

    2022年5月17日
    33
  • DatagramPacket与DatagramSocket 详解

    DatagramPacket与DatagramSocket 详解1.基本概念:  a.DatagramPacket与DatagramSocket位于java.net包中  b.DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字  c.由这两个类所有构成的网络链接是基于UDP协议,是一种不可靠的协议。  之所以不可靠是因为发送方不负责数据是否发送成功,接收方收到数据时也不会

    2022年5月2日
    79
  • 圆桌排序公式_大圆桌怎么坐

    圆桌排序公式_大圆桌怎么坐假设有来自 m 个不同单位的代表参加一次国际会议。每个单位的代表数分别为 ri(i=1,2,…,m)。会议餐厅共有 n 张餐桌,每张餐桌可容纳 ci(i=1,2,…,n) 个代表就餐。为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。试设计一个算法,给出满足要求的代表就餐方案。输入格式第 1 行有 2 个正整数 m 和 n,m 表示单位数,n 表示餐桌数。第 2 行有 m 个正整数,分别表示每个单位的代表数 ri。第 3 行有 n 个正整数,分别表示每个餐桌的容量 ci。输

    2022年8月10日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号