HTML文件:通过IHTMLDocument添加注解

Posted

技术标签:

【中文标题】HTML文件:通过IHTMLDocument添加注解【英文标题】:HTML file: add annotations through IHTMLDocument 【发布时间】:2010-04-14 10:11:44 【问题描述】:

我需要向现有的 html 文档添加“注释”——最好是字符串属性值的形式,我可以按名称读取和写入。

显然(对我来说),标题中的元元素似乎是常见的方式 - 即添加/修改元素,如

<head>
  <meta name="unique-id_property-name"  content="property-value"/>
  ...
</head>

问题 1:“可以接受”/好的,还是有更好的方法来添加元数据?

我在通过 Web 浏览器控件中的 document 获取/更改(il)HTML 内容方面有一点经验。对于这个任务,我已经将 HTML 文档加载到 HTMLDocument 对象中,但我不知道如何继续:

// what I have:

IHTMLDocument2Ptr doc;
doc.CreateInstance(__uuidof(HTMLDocument));
IPersistFile pf = doc;
pf->Load(fileName, STGM_READ);  

// ... what now?

问题 2:除了HTMLDocument,我还应该使用其他什么吗?

问题 3..N: 如何获得head 元素? 如何获取具有给定名称的元元素的值? 如何设置元元素的值(当且仅当它不存在时才添加该项目)?

doc-&gt;all 返回所有标签的集合,即使 count 返回 0,我也可以枚举它。我可以扫描 head,然后扫描名称以某个字符串开头的所有 meta,等等.-但这感觉很笨拙。

【问题讨论】:

【参考方案1】:

我没有足够的使用 C++ 处理 HTML 的经验。 我不确定这是否能回答您的问题,但您可以执行以下操作

    使用 doc->all 枚举所有元素 对于每个 IHtmlElement,您可以将标记名与元数据进行比较(使用 IHtmlElement::get_tagName) 对于这些元标记,您可以使用 IHtmlElement::getAttribute 和 setAttribute 方法获取和设置属性)

或者

    编写一个接受属性名称和值的 javascript 函数。这应该能够更新您拥有的元标记 然后您可以使用 IHtmlDocument2::get_script 作为 IDispatch 获取脚本对象 使用此脚本调度来调用您的 javascript 函数。

【讨论】:

以上是关于HTML文件:通过IHTMLDocument添加注解的主要内容,如果未能解决你的问题,请参考以下文章

CWebBrowser2获取html的内容

vc通过webbrowser操作ie元素

VC CWebBrowser2 获取网页文本内容,该怎么解决

将 IHTMLDocument2.Script.InvokeMember() 返回的 COM 对象转换为有用的东西

H+ 添加(新增)Tab选项卡

arcgis10如何添加注记