如何将下面的xml保存到一个结构体中

MagicFuzzX 2012-10-15 10:48:15
我想解决下面的问题:
<ProcessInfo xxx="AAAA">
<FileInfo>
XXX.EXE
XXX.DLL
...
</FileInfo>
</ProcessInfo>
..
<ProcessInfo xxx="BBBB">
<FileInfo>
yyy.EXE
12.TXT
AA.SYS
..
</FileInfo>
</ProcessInfo>

我想把上面的xml保存为一个结构体,ProcessInfo有N个节点,里面的FileInfo也有N个节点
我的想法是把ProcessInfo作为一个deque,里面的FileInfo也作为一个deque,那么这样就会出现一个deque结构体里面嵌套了一个deque类型的元素,因为这个deque类型的元素大小不一定,我不知道如何malloc,或者还有什么其它的方法保存这种xml结构?,多谢~~
...全文
394 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
MagicFuzzX 2012-10-17
  • 打赏
  • 举报
回复
少用指针轻轻松松的解决了,水平不够,乱用自己把自己搞死~~
傻X 2012-10-15
  • 打赏
  • 举报
回复
之前用tinyxml + vector实现过一个类似任务。(vector和deque差不多,都是STL容器)

不一定要用malloc的,你用封装好的string和CString比你每次用malloc计算他的大小要方便的多
lgstudyvc 2012-10-15
  • 打赏
  • 举报
回复
没仔细看

你定义结构体,或者结构体中包含结构体

再可能用数组
傻X 2012-10-15
  • 打赏
  • 举报
回复
这是我自己的业务啊。逻辑比较复杂,和你关系不大。

你那个XML,我晚上帮你定义下吧,感觉很简单。把QQ留言给我,或者私信我
MagicFuzzX 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

上一段代码吧

C/C++ code

//解析整棵xml树,保存入队列
std::vector<Job>& JobCRWXml::ParseXmlTree(HWND hwnd,std::vector<Job>& output)
{
HANDLE element(NULL);
HANDLE root(NULL);

root = m_xml.……
[/Quote]
Job是如何定义的
傻X 2012-10-15
  • 打赏
  • 举报
回复
上一段代码吧


//解析整棵xml树,保存入队列
std::vector<Job>& JobCRWXml::ParseXmlTree(HWND hwnd,std::vector<Job>& output)
{
HANDLE element(NULL);
HANDLE root(NULL);

root = m_xml.GetRootElement();
if(0==root)
return output;
element = m_xml.GetFistChildElement(root);
while (element != NULL)
{
Job job = ParseElementJob (element,hwnd); //ParseElementJob 要根据XML结构自己细化
//job.JobStatus=-1;
output.push_back(job);
element = m_xml.GetNextElement(element);
//output.push_back(job);
}
return output;
}


希望能对你有帮助
MagicFuzzX 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

里面不是有SaveFile这个方法的么?
CTiny里面就有啊。

就可以保存了啊
[/Quote]
保存到那个结构体啊~~~不是文件
傻X 2012-10-15
  • 打赏
  • 举报
回复
里面不是有SaveFile这个方法的么?
CTiny里面就有啊。

就可以保存了啊
MagicFuzzX 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

单位的东西,发不出来的。
给你找了个TinyXML的例子
TinyXML的例子
这东西很容易的。

你结构体设计的稍微有点问题。
WCHAR szFileName[MAX_PATH];别用这种
用CString或者string ,前者是MFC的,后面是STL的
不然你每次都要处理空间问题,很麻烦的。
[/Quote]
tinyxml我会使用,也会读取,就是不知道如何保存
傻X 2012-10-15
  • 打赏
  • 举报
回复
单位的东西,发不出来的。
给你找了个TinyXML的例子
TinyXML的例子
这东西很容易的。

你结构体设计的稍微有点问题。
WCHAR szFileName[MAX_PATH];别用这种
用CString或者string ,前者是MFC的,后面是STL的
不然你每次都要处理空间问题,很麻烦的。
MagicFuzzX 2012-10-15
  • 打赏
  • 举报
回复
typedef struct _FILEINFO
{
WCHAR szFileName[MAX_PATH];
}FILEINFO,*PFILEINFO;
typedef deque<PFILEINFO> FILEINFO_DEQUE;

typedef struct _PROCESSINFO
{
FILEINFO_DEQUE fileinfo;
}PROCESSINFO,*PPROCESSINFO;
typedef deque<PROCESSINFO> PROCESS_DEQUE;

然后我就不知道如何写了~~,求助啊
MagicFuzzX 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

之前用tinyxml + vector实现过一个类似任务。(vector和deque差不多,都是STL容器)

不一定要用malloc的,你用封装好的string和CString比你每次用malloc计算他的大小要方便的多
[/Quote]
能发我参考参考嘛

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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