建了一个对话框程序,上面放置两个按钮,一个是SaveXML,一个是ReadXML.
在stdafx.h中添加#include "msxml.h"
#import "msxml4.dll"
using namespace MSXML2
后在程序中添加代码:
void CTestXMLDlg::OnBnClickedBtnSave()
{
// TODO: 在此添加控件通知处理程序代码
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(hr))
{
MessageBox(_T("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!"));
}
pDoc->raw_createElement((_bstr_t)(char*)"china", &xmlRoot);
//MSXML2::IXMLDOMNodePtr childnode = xmlnode;
pDoc->raw_appendChild(xmlRoot, NULL); MSXML2::IXMLDOMElementPtr childNode ; pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode);
childNode->Puttext("WuHan");
childNode->setAttribute("population","8,000,000");
childNode->setAttribute("area","10000");
xmlRoot->appendChild(childNode); pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode);
childNode->Puttext("ShangHai");
childNode->setAttribute("population","12,000,000");
childNode->setAttribute("area","12000");
xmlRoot->appendChild(childNode); pDoc->save("f:\\he.xml"); MessageBox(_T("创建完成已保存,beliede!"));
}void CTestXMLDlg::OnBnClickedBtnRead()
{
// TODO: 在此添加控件通知处理程序代码
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(hr))
{
MessageBox(_T("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!"));
}
pDoc->load("f:\\he.xml"); MSXML2::IXMLDOMElementPtr childNode;
childNode = (MSXML2::IXMLDOMElementPtr)(pDoc->selectSingleNode("//City")); MSXML2::DOMNodeType nodeType;
childNode->get_nodeType(&nodeType); BSTR var;
CString name;
childNode->get_nodeName(&var);
name = (char*)(_bstr_t)var; VARIANT varVal;
childNode->get_nodeTypedValue(&varVal);
CString strValue = (_bstr_t)varVal; MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL;
MSXML2::IXMLDOMNodePtr pAttrItem;
childNode->get_attributes(&pAttrs);
long nCount;
pAttrs->get_length(&nCount);
for(int i = 0; i < nCount ; i++)
{
pAttrs->get_item(i,&pAttrItem); BSTR bstrNodeName;
CString strNodeName;
pAttrItem->get_nodeName(&bstrNodeName);
strNodeName=bstrNodeName;
MessageBox(strNodeName);
}
}然后编译,报告:fatal error C1083: 无法打开类型库文件:“msxml4.dll”: No such file or directory
不知何故(vista环境,vs2008平台,难道vista不该本身就带有这个dll吗?)
然后下载了个msxml 4.0 sp2 sdk安装后,就不报错找不到msxml4.dll了,
却报错:d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdtctl.h(37) : error C2144: 语法错误 : “CMonthCalCtrl”的前面应有“;”
位置在afxdtctl.h文件的这个位置
#ifdef _AFX_MINREBUILD
#pragma component(minrebuild, off)
#endif//CObject
//CCmdTarget;
//CWnd
class CMonthCalCtrl;
class CDateTimeCtrl;#undef AFX_DATA
#define AFX_DATA AFX_CORE_DATA
这是为何????
在stdafx.h中添加#include "msxml.h"
#import "msxml4.dll"
using namespace MSXML2
后在程序中添加代码:
void CTestXMLDlg::OnBnClickedBtnSave()
{
// TODO: 在此添加控件通知处理程序代码
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(hr))
{
MessageBox(_T("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!"));
}
pDoc->raw_createElement((_bstr_t)(char*)"china", &xmlRoot);
//MSXML2::IXMLDOMNodePtr childnode = xmlnode;
pDoc->raw_appendChild(xmlRoot, NULL); MSXML2::IXMLDOMElementPtr childNode ; pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode);
childNode->Puttext("WuHan");
childNode->setAttribute("population","8,000,000");
childNode->setAttribute("area","10000");
xmlRoot->appendChild(childNode); pDoc->raw_createElement((_bstr_t)(char*)"City", &childNode);
childNode->Puttext("ShangHai");
childNode->setAttribute("population","12,000,000");
childNode->setAttribute("area","12000");
xmlRoot->appendChild(childNode); pDoc->save("f:\\he.xml"); MessageBox(_T("创建完成已保存,beliede!"));
}void CTestXMLDlg::OnBnClickedBtnRead()
{
// TODO: 在此添加控件通知处理程序代码
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30));
if(!SUCCEEDED(hr))
{
MessageBox(_T("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!"));
}
pDoc->load("f:\\he.xml"); MSXML2::IXMLDOMElementPtr childNode;
childNode = (MSXML2::IXMLDOMElementPtr)(pDoc->selectSingleNode("//City")); MSXML2::DOMNodeType nodeType;
childNode->get_nodeType(&nodeType); BSTR var;
CString name;
childNode->get_nodeName(&var);
name = (char*)(_bstr_t)var; VARIANT varVal;
childNode->get_nodeTypedValue(&varVal);
CString strValue = (_bstr_t)varVal; MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL;
MSXML2::IXMLDOMNodePtr pAttrItem;
childNode->get_attributes(&pAttrs);
long nCount;
pAttrs->get_length(&nCount);
for(int i = 0; i < nCount ; i++)
{
pAttrs->get_item(i,&pAttrItem); BSTR bstrNodeName;
CString strNodeName;
pAttrItem->get_nodeName(&bstrNodeName);
strNodeName=bstrNodeName;
MessageBox(strNodeName);
}
}然后编译,报告:fatal error C1083: 无法打开类型库文件:“msxml4.dll”: No such file or directory
不知何故(vista环境,vs2008平台,难道vista不该本身就带有这个dll吗?)
然后下载了个msxml 4.0 sp2 sdk安装后,就不报错找不到msxml4.dll了,
却报错:d:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxdtctl.h(37) : error C2144: 语法错误 : “CMonthCalCtrl”的前面应有“;”
位置在afxdtctl.h文件的这个位置
#ifdef _AFX_MINREBUILD
#pragma component(minrebuild, off)
#endif//CObject
//CCmdTarget;
//CWnd
class CMonthCalCtrl;
class CDateTimeCtrl;#undef AFX_DATA
#define AFX_DATA AFX_CORE_DATA
这是为何????
解决方案 »
- MFC对话框自己生成的程序OnPaint函数里//if判断是对话框的图标在左上角显示的代码吗?怎么注释掉这段代码页可以显示?
- 急求大家帮忙解决关于m_pRecordset-> PutCollect()的问题?
- 有关链表的问题
- 小弟写的一个ATL,列集CoMarshalInterThreadInterfaceInStream出现0x80040155 Interface not registered错误,新学ATL,就遇上这个大难题
- 从.txt文件中读取文件,将文件内容加入RichEdit中。。。
- 图片格式tiff转换为位图
- vc做的程序debug和releas有什么区别
- 请教串口通信行家,怎样向串口写入数据
- 哪位高手可以给我一个操作文本文件的例子?
- VC6.0下使用STLPort,link时出错
- 拆分窗口创建视图老出错
- 这个问题把我弄郁闷了!高手进来帮我!!进来的都有分!!!谢谢!!!!!急!!!!!
这是怎么回事?
#include "msxml.h"
#import "msxml4.dll"
using namespace MSXML2;