考虑以下html代码:
<div id='x'><div id='y'>Y content</div>X content</div>
我只想提取'x'的内容。但是,其innerText属性也包含'y'的内容。我尝试迭代它的 children 和所有属性,但它们只返回内部标记。
如何通过IHTMLElement接口仅访问'x'的实际数据?
由于
答案 0 :(得分:2)
使用类似:
function getText(this) {
var txt = this.innerHTML;
txt.replace(/<(.)*>/g, "");
return txt;
}
因为this.innerHTML返回
<div id='y'>Y content</div>X content
函数getText将返回
X content
也许这会有所帮助。
答案 1 :(得分:1)
使用childNodes集合返回子元素和文本节点 你需要从IHTMLelement QI IHTMLDomNode。
答案 2 :(得分:0)
这是盛建议的最终代码(当然只是样本的一部分):
mshtml.IHTMLElementCollection c = ((mshtml.HTMLDocumentClass)(wbBrowser.Document)).getElementsByTagName("div");
foreach (IHTMLElement div in c)
{
if (div.className == "lyricbox")
{
IHTMLDOMNode divNode = (IHTMLDOMNode)div;
IHTMLDOMChildrenCollection children = (IHTMLDOMChildrenCollection)divNode.childNodes;
foreach (IHTMLDOMNode child in children)
{
Console.WriteLine(child.nodeValue);
}
}
}
答案 3 :(得分:0)
由于innerText()不适用于ie,我猜没有真正的方法。 也许通过以下方式创建内容来尝试服务器端解决问题:
<div id='x'><div id='y'>Y content</div>X content</div>
<div id='x-plain'>_plain X content_</div>
“ Plain X内容”表示元素的c#生成内容。 现在,您可以通过引用getObject('x-plan')。innerHTML()获得对元素的访问权。