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->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添加注解的主要内容,如果未能解决你的问题,请参考以下文章
VC CWebBrowser2 获取网页文本内容,该怎么解决