由于在 javascript 中不存在指针概念,故在 xml 页面调用 OCX 控件时,以前控件中的输出
参数通过指针返回在这样的情况下行不通了,但本来就有返回参数,以及在同时有多个输
出参数的情况下,依然想通过返回值返回,那就需要进行处理,然而怎么去处理呢?通过
研究发现通过 xml 形式的字符串返回是一种解决方案,在解决这样的返回值的同时突然发
现其实如果输入参数是结构体的话,也可以通过 xml 字符串的形式传入。然而怎么去解析
它呢,而又怎么去做一个 xml 字符串呢,通过研究学习,以下是当然已有的解决方案。
开发环境:VS2010
一、解析 xml 文件:
假如已存在一个 xml 文件 classfile.xml
#import "msxml3.dll"
using namespace MSXML2;
void CannilyxmlDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
MSXML2::IXMLDOMDocumentPtr xmldoc;
HRESULT hr;
hr = CoInitialize(NULL);//必须初始化,否则后面的 CreateInstance 创建文档要失败
if(FAILED (hr))//此处最好用 FAILED 或者 SUCCEEDED 来判断,否则可能引起未知错误
{
MessageBox("初始化 COM 失败");
}
else
{
MessageBox("初始化 COM 成功");
}
hr = xmldoc.CreateInstance(__uuidof(MSXML2::DOMDocument));
if(FAILED (hr))
{
MessageBox("创建 xml 文档对象失败");
}
else
{
MessageBox("创建 xml 文档对象成功");
}
xmldoc->load("classfile.xml");//此语句非常非常重要,和解析 xml 字符串语句只有点点区别,
但引起的错误却是千差万别
MSXML2::IXMLDOMElementPtr root;
MSXML2::IXMLDOMNodeListPtr nodelist;
MSXML2::IXMLDOMNodeListPtr childnodelist;
root = xmldoc->GetdocumentElement();
nodelist = root->GetchildNodes();
MSXML2::IXMLDOMNodePtr node;
MSXML2::IXMLDOMNodePtr childnode;
评论4