MSXML读写的例子

128 views 十一月 28, 05 by Timothy

1、目标文档:


lizlex

2、步骤:

(1)在StdAfx.h中引入动态链接库 MSXML.DLL(C:\windows\system32\msxml4.dll)
#import

(2)界面设计:
分别放入三个Text,用于输入数据,与显示文档内容用,并添加关联的成员变量m_strId,m_strAuthor, m_strTitle;并添加确定按钮:

(3)产生文档的程序片断
void CXmlparseDlg::OnButtonGenerate()
{
UpdateData();

MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot ;

//创建DOMDocument对象
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(!SUCCEEDED(hr))
{
MessageBox(“无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!”);
return ;
}

//根节点的名称为Book
//创建元素并添加到文档中
xmlRoot=pDoc->createElement((_bstr_t)”Book”);

//设置属性
xmlRoot->setAttribute(“id”,(const char *)m_strId);
pDoc->appendChild(xmlRoot);
MSXML2::IXMLDOMElementPtr pNode;

//添加“author”元素
pNode=pDoc->createElement((_bstr_t)”Author”);
pNode->Puttext((_bstr_t)(const char *)m_strAuthor);
xmlRoot->appendChild(pNode);

//添加“Title”元素
pNode=pDoc->createElement(“Title”);
pNode->Puttext((const char *)m_strTitle);
xmlRoot->appendChild(pNode);

//保存到文件
//如果不存在就建立,存在就覆盖
pDoc->save(“d:\\he.xml”);

}

(4)读取XML文档的程序片断
void CXmlparseDlg::OnButtonLoad()
{
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr;
hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(FAILED(hr))
{
MessageBox(“无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!”);
return ;
}

//加载文件
pDoc->load(“d:\\he.xml”);

MSXML2::IXMLDOMNodePtr pNode;

//在树中查找名为Book的节点,”//”表示在任意一层查找
pNode=pDoc->selectSingleNode(“//Book”);

MSXML2::DOMNodeType nodeType;

//得到节点类型
pNode->get_nodeType(&nodeType);

//节点名称
CString strName;

strName=(char *)pNode->GetnodeName();

//节点属性,放在链表中
MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap=NULL;
MSXML2::IXMLDOMNodePtr pAttrItem;
_variant_t variantvalue;
pNode->get_attributes(&pAttrMap);

long count;
count=pAttrMap->get_length(&count);

pAttrMap->get_item(0,&pAttrItem);
//取得节点的值
pAttrItem->get_nodeTypedvalue(&variantvalue);
m_strId=(char *)(_bstr_t)variantvalue;

UpdateData(FALSE);

}



随机日志

<

This entry does not have any comment... but you can be first.


Leave a Reply

(Ctrl+Enter)