/* xml文件如下 */<?xml version="1.0"?>
<xmldata>
<xmlnode/>
<xmltext>Hello, World!</xmltext>
</xmldata> // -- 我的程序 -------------------------------
CoInitialize(NULL);try{ // 我全用智能指针了,还有别的需要注意的吗?
CComPtr<IXMLDOMDocument>spXMLDOM;
CComPtr<IXMLDOMNode>spXMLNode;
CComPtr<IXMLDOMNodeList>spNodeList; VARIANT_BOOL bSuccess = false;
CComBSTR bstrSS = "", bstrTag = "";
long lCount; HRESULT hr = spXMLDOM.CoCreateInstance(__uuidof(DOMDocument));
hr = spXMLDOM->load(CComVariant(L"未命名.xml"), &bSuccess); /* 这一步开始有点糊涂了,如果我要列出节点<xmldata>下有几个子节点,用如下语句可以吧!按照我的理解是应该有两个(分别是<xmlnode>和<xmltext>),但是lCount始终为1,不知为什么??还有就是如果文件中有两个以上<xmldata>,只是层级关系不同,那么getElementsByTagName可以判断吗?*/
bstrTag = L"xmldata"
spXMLDOM->getElementsByTagName(bstrTag, &pNodeList);
pNodeList->get_length(&lCount);
}
catch(...)
{
... ...
}CoUninitialize();////////////////////////////////////////////////
还有几个问题就是:
(1)、如何判断一个节点下还有没有子节点了,因为我要判断如果是叶子节点,我要读取那里的文本!!
(2)、get_item是什么意思??
(3)、定位某个节点用hr = spXMLDOM->selectSingleNode(bstrSS, &spXMLNode);
那么要看这个节点下还有多少节点怎么看,怎么知道它下面是节点还是叶子??
<xmldata>
<xmlnode/>
<xmltext>Hello, World!</xmltext>
</xmldata> // -- 我的程序 -------------------------------
CoInitialize(NULL);try{ // 我全用智能指针了,还有别的需要注意的吗?
CComPtr<IXMLDOMDocument>spXMLDOM;
CComPtr<IXMLDOMNode>spXMLNode;
CComPtr<IXMLDOMNodeList>spNodeList; VARIANT_BOOL bSuccess = false;
CComBSTR bstrSS = "", bstrTag = "";
long lCount; HRESULT hr = spXMLDOM.CoCreateInstance(__uuidof(DOMDocument));
hr = spXMLDOM->load(CComVariant(L"未命名.xml"), &bSuccess); /* 这一步开始有点糊涂了,如果我要列出节点<xmldata>下有几个子节点,用如下语句可以吧!按照我的理解是应该有两个(分别是<xmlnode>和<xmltext>),但是lCount始终为1,不知为什么??还有就是如果文件中有两个以上<xmldata>,只是层级关系不同,那么getElementsByTagName可以判断吗?*/
bstrTag = L"xmldata"
spXMLDOM->getElementsByTagName(bstrTag, &pNodeList);
pNodeList->get_length(&lCount);
}
catch(...)
{
... ...
}CoUninitialize();////////////////////////////////////////////////
还有几个问题就是:
(1)、如何判断一个节点下还有没有子节点了,因为我要判断如果是叶子节点,我要读取那里的文本!!
(2)、get_item是什么意思??
(3)、定位某个节点用hr = spXMLDOM->selectSingleNode(bstrSS, &spXMLNode);
那么要看这个节点下还有多少节点怎么看,怎么知道它下面是节点还是叶子??
1、变量的命名规范上还可以再注意一下!
2、可以把初始化的一些东西放在try外面,而把容易出错的部分放在里面不叫好的,这样比较清楚一些!