349上位机VC MFC通过MSXML组件读取XML文件
MSXML读取XML文件
功能展示
XML是标签语言HTML的一种扩展,XML允许我们使用时自定义标签,通过自定义的标签可以很方便的将数据组织起来,形成记录集,这样的记录集具有很好灵活性,所以XML已得到了很广泛的使用,我们当前例程就通过自己编写代码实现XML文件的读取,效果如图,点击按钮后,会弹出选择XML文件的对话框,选择了XML文件后,就会将读取的内容显示在列表控件中;
要点提示
例程是通过MSXML组件实现XML文件的读取,组件MSXML中的IXMLDOMDocumentPtr指针调用函数selectNodes()可以获取件MSXML 的IXMLDOMNodeListPtr指针对象。此指针 对象可以获取具体 的节点的值。
selectNodes()函数主要获取节点的路径,XML文件中<></>组合称为一个节点,内部还可以有子节点。
实现功能
1.新建基于对话框的应用程序
2.添加一列表控件IDC_LIST1用于显示读取的数据,添加一按钮<读取XML文件>关联按钮的点击函数
void CGkbc8Dlg::OnRead()
{
CString sXMLFile;
CFileDialog Dlg(TRUE,".xml","工控编程吧",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"XML Files (*.xml)|*.xml||");
if(Dlg.DoModal()==IDOK)
sXMLFile = Dlg.GetPathName();
else
return;
CListCtrl* pList=(CListCtrl*)GetDlgItem(IDC_LIST1);
unsigned short buff[128];
memset(buff,0,128);
MSXML::IXMLDOMDocumentPtr xdoc;
xdoc.CreateInstance(__uuidof(MSXML:OMDocument));
xdoc->load(_variant_t(sXMLFile));
MSXML::IXMLDOMNodeListPtr nodelist=NULL;
nodelist=xdoc->selectNodes("database/filed");
MSXML::IXMLDOMNodePtr subnode;
long nodecount;
nodelist->get_length(&nodecount);
for(long i=0;i<nodecount;i++)
{
subnode=nodelist->nextNode()->selectSingleNode((_bstr_t)"name");
_bstr_t bstrname=subnode->Gettext();
pList->InsertItem(i,"");
pList->SetItemText(i,0,bstrname);
}
nodelist->reset();
for(i=0;i<nodecount;i++)
{
subnode=nodelist->nextNode()->selectSingleNode((_bstr_t)"type");
_bstr_t bstrname=subnode->Gettext();
pList->SetItemText(i,1,bstrname);
}
}
3.复制例程根目录MSXML组件动态库,引入到工程中,及程序初始化时初始化控件
#import "msxml.dll"
using namespace MSXML;
CListCtrl* pList=(CListCtrl*)GetDlgItem(IDC_LIST1);
pList->SetExtendedStyle(LVS_EX_GRIDLINES);
pList->ModifyStyle(0,LVS_REPORT,0);
pList->InsertColumn(0,"name",LVCFMT_LEFT,100);
pList->InsertColumn(1,"type",LVCFMT_LEFT,120);
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|