网页上是这样的:
<div> <input value='1' type='radio'> </input>10% </div>
<div> <input value='2' type='radio'> </input>20% </div> 我现在已经获得了input元素节点的IHTMLElement,现在想获得10%的那个文本节点值。代码如下:element为当前的input的IHTMLElement
CComPtr <IHTMLElement> parentElement;
CComPtr <IHTMLElementCollection> elementCollection;
CComPtr <IDispatch> pDispatch;
VARIANT value;
long length; element->get_parentElement(&parentElement);
parentElement->get_children(&pDispatch);
pDispatch->QueryInterface(IID_IHTMLElementCollection, (VOID**)&elementCollection);
elementCollection->get_length(&length);
for (INT i = 0; i < length; i++)
{
IDispatch *pDispInputText = NULL;
CComVariant vIndex=i;
elementCollection->item(vIndex,vIndex,&pDispInputText);
CComPtr <IHTMLElement> pElemInputText;
hr=pDispInputText->QueryInterface(IID_IHTMLElement,(void**)&pElemInputText);
} 上面得到的length是1,而最后得到的pElemInputText还是当前input的IHTMLElement,没能得到其后的文本节点。
input后的文本节点应该是他的兄弟节点啊,可是为什么get_length只能得到1?至少应为2啊。在线等
<div> <input value='1' type='radio'> </input>10% </div>
<div> <input value='2' type='radio'> </input>20% </div> 我现在已经获得了input元素节点的IHTMLElement,现在想获得10%的那个文本节点值。代码如下:element为当前的input的IHTMLElement
CComPtr <IHTMLElement> parentElement;
CComPtr <IHTMLElementCollection> elementCollection;
CComPtr <IDispatch> pDispatch;
VARIANT value;
long length; element->get_parentElement(&parentElement);
parentElement->get_children(&pDispatch);
pDispatch->QueryInterface(IID_IHTMLElementCollection, (VOID**)&elementCollection);
elementCollection->get_length(&length);
for (INT i = 0; i < length; i++)
{
IDispatch *pDispInputText = NULL;
CComVariant vIndex=i;
elementCollection->item(vIndex,vIndex,&pDispInputText);
CComPtr <IHTMLElement> pElemInputText;
hr=pDispInputText->QueryInterface(IID_IHTMLElement,(void**)&pElemInputText);
} 上面得到的length是1,而最后得到的pElemInputText还是当前input的IHTMLElement,没能得到其后的文本节点。
input后的文本节点应该是他的兄弟节点啊,可是为什么get_length只能得到1?至少应为2啊。在线等
objAllElement->get_length(&nElementCount);这样看可否取到所有的
还有,我取的是文本节点,可是取出的全部是元素节点。
element->QueryInterface --> IHTMLDOMNode
IHTMLDOMNode::get_nextSibling --> IHTMLDOMNode (node2)
assert(node2->get_nodeType() == 3);
node2->get_nodeValue --> VARIANT // VT_BSTR "10%"如果不用节点方式,可以这样取:
element->get_parentElement --> IHTMLElement
IHTMLElement::get_innerText --> BSTR // == "10%"