利用CMarkup解析xml,在线等,求代码

imlab 2012-10-10 04:15:58
XML文件的内容如下:
<SUMMIT_WOC>
<AnswerDlgTitle>Answer Calls - SM_T</AnswerDlgTitle>
<AnswerButtonID>28</AnswerButtonID>
<JoinButtonID>24</JoinButtonID>
<DisconButtonID>30</DisconButtonID>
</SUMMIT_WOC>
<SUMMIT_WOC>
<AnswerTitle>Answer Calls - SM_1</AnswerTitle>
<AnswerButtonID>28</AnswerButtonID>
<JoinButtonID>24</JoinButtonID>
<DisconButtonID>31</DisconButtonID>
</SUMMIT_WOC>

要求,解析出来里面的数据,谢谢大神
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
imlab 2012-10-11
  • 打赏
  • 举报
回复
谢谢各位
zjs100901 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:
[code=Assembly] <SUMMIT_WOC>
<AnswerDlgTitle> Answer Calls - SM_T </AnswerDlgTitle>
<AnswerButtonID> 28 </AnswerButtonID>
<JoinButtonID> 24 </JoinButtonID>
<DisconButtonID> ……
1楼给的代码只能解析出来第一个里面的数据,现在要求解析出所有的数据
[/Quote]
我这里确实有一次只解析出第一个里面的数据但以后再运行又能解析全部了
xml.Load( "D:\\test2.xml " ); //返回false不知是怎么回事?返回false也能解析全部,为什么呢?

据说一个XML文件只能有一个根元素,我也不是很懂,请参考http://topic.csdn.net/u/20110323/10/c40b65c4-0cca-46c3-9227-b920c40ac78b.html

XMLLoadfalse



yht7905907 2012-10-10
  • 打赏
  • 举报
回复
用递归啊
void ShowXML(CMarkup& cMarkUp)
{
if(!cMarkUp.IntoElem())
return;
while(cMarkUp.FindElem())
{
CString strParent,strData;
strParent = cMarkUp.GetTagName();
strData = cMarkUp.GetData();
CMarkup myxml = cMarkUp;
ShowXml(myxml);
}
}
void ReadXML()
{
CMarkup cMarkup;
if(!xml.Load("D:\\test2.xml "))
return false;
cMarkup.ResetMainPos();
cMarkup.FindElem();
cMarkup.IntoElem();
while(cMarkup.FindElem())
{
strParent = cMarkup.GetTagName();
strData = cMarkup.GetData();
CMarkup tempxml=cMarkup;
ShowXMl(tempxml);
}
}
ShowXML函数的while循环里面你要什么东西自己去处理
imlab 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

[code=Assembly] <SUMMIT_WOC>
<AnswerDlgTitle> Answer Calls - SM_T </AnswerDlgTitle>
<AnswerButtonID> 28 </AnswerButtonID>
<JoinButtonID> 24 </JoinButtonID>
<DisconButtonID> 30 </DisconButto……
[/Quote]

1楼给的代码只能解析出来第一个里面的数据,现在要求解析出所有的数据
zjs100901 2012-10-10
  • 打赏
  • 举报
回复
<SUMMIT_WOC>
<AnswerDlgTitle>Answer Calls - SM_T</AnswerDlgTitle>
<AnswerButtonID>28</AnswerButtonID>
<JoinButtonID>24</JoinButtonID>
<DisconButtonID>30</DisconButtonID>
</SUMMIT_WOC>
<SUMMIT_WOC>
<AnswerTitle>Answer Calls - SM_1</AnswerTitle>
<AnswerButtonID>28</AnswerButtonID>
<JoinButtonID>24</JoinButtonID>
<DisconButtonID>31</DisconButtonID>
</SUMMIT_WOC>

	CMarkup xml;
bool bResult = xml.Load( "D:\\test2.xml" ); //返回false是怎么回事?
CString data1, data2, data3, data4;
while( xml.FindElem( "SUMMIT_WOC" ) )
{
xml.IntoElem();

xml.FindElem( "AnswerDlgTitle" );
data1 = xml.GetData();
xml.FindElem( "AnswerButtonID" );
data2 = xml.GetData();
xml.FindElem( "JoinButtonID" );
data3 = xml.GetData();
xml.FindElem( "DisconButtonID" );
data4 = xml.GetData();

CString str = "AnswerDlgTitle: " + data1 +
"AnswerButtonID: " + data2 +
"JoinButtonID: " + data3 +
"DisconButtonID: " + data4;
MessageBox( str );

xml.OutOfElem();
}

16,471

社区成员

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

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

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