使用MsXML存取XML(2).docx_第1页
使用MsXML存取XML(2).docx_第2页
使用MsXML存取XML(2).docx_第3页
使用MsXML存取XML(2).docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用MsXML存取XML(2)与JavaScript相比而言,在C+中调用COM比较麻烦,MsXML库是一组COM动态库,这意味Visual C+应用程序必须以COM调用方式调用MsXML组件。下面是实现存取persons.xml文件的Visual C+版本。需要导入“msxml4.dll”组件库【程序 6-8】使用MsXML读写XML文件1. 01 #include stdafx.h 2. 02 #include comutil.h 3. 03 #include 4. 04 5. 05 #import msxml4.dll 6. 06 7. 07 void WritePerson(MSXML2:IXMLDOMDocument2Ptr pDocument, 8. MSXML2:IXMLDOMNodePtr pParentNode, CString name, long age) 9. 08 10. 09 /创建一个节点 11. 10 MSXML2:IXMLDOMElementPtr pPersonNode = pDocument-createElement(_T(person); 12. 11 pParentNode-appendChild(pPersonNode); 13. 12 14. 13 /写入name 15. 14 MSXML2:IXMLDOMElementPtr pPersonNameNode = pDocument-createElement(_T(name); 16. 15 pPersonNameNode-text = _bstr_t(name); 17. 16 18. 17 /写入age 19. 18 MSXML2:IXMLDOMElementPtr pPersonAgeNode = pDocument-createElement(_T(age); 20. 19 pPersonAgeNode-text = _bstr_t(age); 21. 20 22. 21 pPersonNode-appendChild(pPersonNameNode); 23. 22 pPersonNode-appendChild(pPersonAgeNode); 24. 23 25. 24 26. 25 void WritePersons() 27. 26 28. 27 MSXML2:IXMLDOMDocument2Ptr pXMLDocument; 29. 28 pXMLDocument.CreateInstance(_uuidof(MSXML2:DOMDocument); 30. 29 MSXML2:IXMLDOMElementPtr pPersonsNode = 31. pXMLDocument-createElement(_T(persons); 32. 30 pXMLDocument-appendChild(pPersonsNode); 33. 31 34. 32 WritePerson(pXMLDocument, pPersonsNode, _T(佟湘玉), 28); 35. 33 WritePerson(pXMLDocument, pPersonsNode, _T(白展堂), 27); 36. 34 37. 35 pXMLDocument-save(_T(persons.xml); 38. 36 39. 37 40. 38 void ReadPersons() 41. 39 42. 40 MSXML2:IXMLDOMDocument2Ptr pXMLDocument; 43. 41 pXMLDocument.CreateInstance(_uuidof(MSXML2:DOMDocument); 44. 42 45. 43 pXMLDocument-load(_T(persons.xml); 46. 44 47. 45 MSXML2:IXMLDOMElementPtr pRootNode = pXMLDocument-documentElement; 48. 46 /查找节点 49. 47 MSXML2:IXMLDOMNodeListPtr pPersonNodes = pRootNode-selectNodes(_T(person); 50. 48 51. 49 CString s; 52. 50 long size = pPersonNodes-length; 53. 51 54. 52 for(int i = 0; i itemi; 57. 55 58. 56 MSXML2:IXMLDOMNodePtr pNameNode = pPersonNode-selectSingleNode(_T(name); 59. 57 MSXML2:IXMLDOMNodePtr pAgeNode =pPersonNode-selectSingleNode(_T(age); 60. 58 61. 59 s.Format(_T(%sname: %stage: %srn), s, (LPCTSTR)pNameNode- 62. text, (LPCTSTR)pAgeNode-text); 63. 60 64. 61 65. 62 _tprintf(s); 66. 63 67. 64 68. 65 int _tmain() 69. 66 70. 67 setlocale(LC_ALL, chs); 71. 68 72. 69 HRESULT hr; 73. 70 hr = :CoInitialize(NULL); 74. 71 75. 72 WritePersons(); 76. 73 ReadPersons(); 77. 74 78. 75 :CoUninitialize(); 79. 76 return 0;77 运行结果如图6-27所示。图6-27 运行结果在Visual C+中,调用COM组件比较省力、安全的办法是使用#import方式。另外,MsXML的版本不同,其提供的DLL文件名也不同,如MSXML 4.0对应的DLL为msxml4.dll。细心的读者可能会发现,一旦在程序中导入了msxml4.dll并build(生成)一次项目,在程序中就可以自动引入一些类,如:MSXML2:IXMLDOMDocument2Ptr,MSXML2是一个C+名字空间,IXMLDOMDocument2Ptr则是一个封装了IXMLDOMDocument对象操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论