vc中用mfc读取xml文档 平台:VC6.0或VS2010

xml文档如下(共3层,取中间的值):<?xmlversion="1.0"encoding="utf-8"?>-<root>-<root1>-<node2><childn... xml文档如下(共3层,取中间的值):
<?xml version="1.0" encoding="utf-8"?>
- <root>
- <root1>
- <node2>
<childnode1 attrib1="value11" attrib2="value21"/>
<childnode2 attrib1="value12" attrib2="value22"/>
<childnode3 attrib1="value13" attrib2="value23"/>
</node2>
</root1>
</root>
我要取的是:中间那三行attrib1和attrib2的值共6个值
PS:1、要源代码,不必传资料,我纠结这个问题有几天了,网上的资料看了很多,但还是不会
2、用MFC对话框,(要能观察到结果)
3、那三行只是我随便举得例子,实际行数未知?
4、不用第三方控件

费心了,谢谢!!
邮箱:1043923268@qq.com
展开
 我来答
ljupcn
2012-02-20 · TA获得超过1688个赞
知道小有建树答主
回答量:872
采纳率:0%
帮助的人:953万
展开全部
程序发到你邮箱了。里面有详细注释
核心代码如下
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle = _T("选择XML文件");
fileDlg.m_ofn.lpstrFilter = _T("Text Files(*.xml)\0*.xml\0All Files(*.*)\0*.*\0\0");

if(IDOK == fileDlg.DoModal())
{
CFile inFile;
inFile.Open(fileDlg.GetPathName(), CFile::modeRead | CFile::typeBinary, NULL);

UINT nFileLen = inFile.GetLength();
char* pBuf = new char[nFileLen + 1];
pBuf[nFileLen] = 0;
inFile.Read(pBuf, nFileLen);
CString strFile = pBuf;

int nIndex;
UpdateData();

m_FilePath = fileDlg.GetPathName();

nIndex = strFile.Find(_T("childnode1"), 0);
m_Edit11 = strFile.Mid(nIndex + 20, 7);
m_Edit21 = strFile.Mid(nIndex + 38, 7);

nIndex = strFile.Find(_T("childnode2"), 0);
m_Edit12 = strFile.Mid(nIndex + 20, 7);
m_Edit22 = strFile.Mid(nIndex + 38, 7);

nIndex = strFile.Find(_T("childnode3"), 0);
m_Edit13 = strFile.Mid(nIndex + 20, 7);
m_Edit23 = strFile.Mid(nIndex + 38, 7);

UpdateData(FALSE);

delete pBuf;

inFile.Close();
}
追问
刚刚开会,没看到,我晚上回去看一下,谢谢你哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CChenwenjuan
2012-02-21 · 超过31用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:78.9万
展开全部
已发送
不过,我的只有两层,你看着办吧

还有上面一楼的那个,你根本就是文件操作(fileOpen)xml有自己的接口
你要用文件操作的话,如果是下面的格式:
<?xml version="1.0" encoding="utf-8"?>
- <root>
- <root1>
- <node2>
<childnode1 attrib1="value11" attrib2="value21"/>
<childnode2 attrib1="value12" attrib2="value22"/>
<childnode3 attrib1="value13" attrib2="value23"/>
</node2>
- <node4> //这边有变化
<childnode1 attrib1="value11" attrib2="value21"/>
<childnode2 attrib1="value12" attrib2="value22"/>
<childnode3 attrib1="value13" attrib2="value23"/>
</node4>

</root1>
</root>
这种格式你就根本不能读取指定节点,你会12个数据都读出,而不是6个
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
455175633
2012-02-21 · TA获得超过301个赞
知道小有建树答主
回答量:632
采纳率:0%
帮助的人:405万
展开全部
这样叫核心~~~
你的代码根本不能提前xml文件~~
回答了就耐心的给别人写个完整点的吧。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式