XML技术是微软公司提出来的标准,早在Office中就已经支持,但实质性的使用是在Office2003中,Office 2007中实现了质的飞跃。
因为要做一个项目,使用到Word中的XML功能,通过Office的VB自带的帮助对XML的使用简单地学习了一下,文件实际过程中考虑了一些常见的例子。
在编制自动化客户程序时使其头文件要包含ComObj.hpp和Utilcls.h。
- #include <ComObj.hpp>
- #include <Utilcls.h>
C++ Builder开发者把Excel自动化对象的功能包装在下面的四个Ole Object Class函数中,开发时可以很方便地进行调用。
设置对象属性:Variant OlePropertySet(属性名,参数……);
获得对象属性:Void OlePropertyGet(属性名,参数……);
调用对象方法:Variant OleFunction(函数名,参数……);
调用对象过程 Void OleProcedure(过程名,参数……);
在使用过程中的预先设想达成的目的:
一、向新生成的文档中添加XMLNode节点,通过宏操作得到添加节点的VB代码:ActiveDocument.XMLNodes.ADD "Name","NameSpaceURL",其中Name为节点的名称,NameSpaceURL为要添加的节点的命名空间。
尝试使用:
- (Variant)WordApplication.OlePropertyGet("ActiveDocument").OlePropertyGet("XMLNodes").OleFunction("ADD","Name","NameSpaceURL");
运行时程序提示“发生意外”,更改OleFunction()为OleProcedure()仍然同样问题。
二、想调用XMLNodes集的XMLNode节点,判断该节点的Name,根据Name具体的内容给些节点的NodeValue赋值:
- (Variant)WordApplication.OlePropertyGet("XMLNodes").OlePropertyGet("Item").OlePropertySet("Name",name);
提示“发生意外”
解决方法:
- Variant vWordApp, vXMLNode;
- //添加XML节点
- //vWordApp为当前创建的Word应用程序
- vWordApp.OlePropertyGet("ActiveDocument").OlePropertyGet("XMLNodes")
- .OleProcedure("Add",
- "标题", //XML节点名
- "FileMgr" //XML已存在的架构名,XML的命名空间
- );
- //获取XMLNodes集中的单个节点
- //int index;//XMLNodes集中,通过Item可以返回单个节点,index即为要返回的节点索引,第一个节点的索引值为1
- vWordApp.OlePropertyGet("ActiveDocument")
- .OleFunction("Range").OlePropertyGet("XMLNodes").OleFunction("Item", index);
总结:
1、VB中添加对象的过程一般调用对象方法OleFunction,适用于没用参数的情况下;如果带有参数,需要调用对象过程OleProcedure。
2、VB中使用对象的集合时,如果返回其中的单个对象,通过Item可以返回集中的单个对象。但集合要通过Range范围获取,否则系统会报错。
用法
- (Variant)V.OleFunction("Range").OlePropertyGet("Sets").OleFunction("Item", index);
其中Sets代表要从中返回单个对象的集合。
Range用到的时调用对象方法OleFunction。
常见的集合有Documents、Tables、Cells、Rows、Columns、Lines、Workbooks、Worksheets、Fields、Bookmarks、XMLNodes。