【问题标题】:HTML file: add annotations through IHTMLDocumentHTML文件:通过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,等等.-但这感觉很笨拙。

【问题讨论】:

    标签: c++ com winapi dom


    【解决方案1】:

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

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

    或者

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 2015-05-03
      • 2018-04-01
      • 2010-09-21
      • 1970-01-01
      • 2012-04-14
      • 2018-09-05
      • 1970-01-01
      相关资源
      最近更新 更多