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

时间:2022-05-16 19:10:55
我想解决下面的问题:
<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结构?,多谢~~

12 个解决方案

#1


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

不一定要用malloc的,你用封装好的string和CString比你每次用malloc计算他的大小要方便的多

#2


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

不一定要用malloc的,你用封装好的string和CString比你每次用malloc计算他的大小要方便的多

能发我参考参考嘛

#3


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;

然后我就不知道如何写了~~,求助啊

#4


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

你结构体设计的稍微有点问题。
WCHAR szFileName[MAX_PATH];别用这种
用CString或者string ,前者是MFC的,后面是STL的
不然你每次都要处理空间问题,很麻烦的。

#5


引用 4 楼  的回复:
单位的东西,发不出来的。
给你找了个TinyXML的例子
TinyXML的例子
这东西很容易的。

你结构体设计的稍微有点问题。
WCHAR szFileName[MAX_PATH];别用这种
用CString或者string ,前者是MFC的,后面是STL的
不然你每次都要处理空间问题,很麻烦的。

tinyxml我会使用,也会读取,就是不知道如何保存

#6


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

就可以保存了啊

#7


引用 6 楼  的回复:
里面不是有SaveFile这个方法的么?
CTiny里面就有啊。

就可以保存了啊

保存到那个结构体啊~~~不是文件

#8


上一段代码吧


//解析整棵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;
}


希望能对你有帮助

#9


引用 8 楼  的回复:
上一段代码吧

C/C++ code

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

    root = m_xml.……

Job是如何定义的

#10


这是我自己的业务啊。逻辑比较复杂,和你关系不大。

你那个XML,我晚上帮你定义下吧,感觉很简单。把QQ留言给我,或者私信我

#11


没仔细看

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

再可能用数组

#12


少用指针轻轻松松的解决了,水平不够,乱用自己把自己搞死~~ 如何将下面的xml保存到一个结构体中

#1


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

不一定要用malloc的,你用封装好的string和CString比你每次用malloc计算他的大小要方便的多

#2


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

不一定要用malloc的,你用封装好的string和CString比你每次用malloc计算他的大小要方便的多

能发我参考参考嘛

#3


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;

然后我就不知道如何写了~~,求助啊

#4


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

你结构体设计的稍微有点问题。
WCHAR szFileName[MAX_PATH];别用这种
用CString或者string ,前者是MFC的,后面是STL的
不然你每次都要处理空间问题,很麻烦的。

#5


引用 4 楼  的回复:
单位的东西,发不出来的。
给你找了个TinyXML的例子
TinyXML的例子
这东西很容易的。

你结构体设计的稍微有点问题。
WCHAR szFileName[MAX_PATH];别用这种
用CString或者string ,前者是MFC的,后面是STL的
不然你每次都要处理空间问题,很麻烦的。

tinyxml我会使用,也会读取,就是不知道如何保存

#6


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

就可以保存了啊

#7


引用 6 楼  的回复:
里面不是有SaveFile这个方法的么?
CTiny里面就有啊。

就可以保存了啊

保存到那个结构体啊~~~不是文件

#8


上一段代码吧


//解析整棵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;
}


希望能对你有帮助

#9


引用 8 楼  的回复:
上一段代码吧

C/C++ code

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

    root = m_xml.……

Job是如何定义的

#10


这是我自己的业务啊。逻辑比较复杂,和你关系不大。

你那个XML,我晚上帮你定义下吧,感觉很简单。把QQ留言给我,或者私信我

#11


没仔细看

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

再可能用数组

#12


少用指针轻轻松松的解决了,水平不够,乱用自己把自己搞死~~ 如何将下面的xml保存到一个结构体中