HTML-файл: добавьте аннотации через IHTMLDocument - PullRequest
1 голос
/ 14 апреля 2010

Мне нужно добавить «аннотации» к существующим документам HTML - лучше всего в виде значений свойств строки, которые я могу читать и писать по имени.

Очевидно (для меня), метаэлементы в заголовке кажутся обычным способом - то есть добавление / изменение таких элементов, как

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

Вопрос 1: Это "приемлемо" / ок или есть лучший способ добавить метаданные?

У меня был небольшой опыт получения / mut (il) содержимого HTML через document в элементе управления веб-браузера. Для этой задачи я уже загрузил 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 Ответ

2 голосов
/ 15 апреля 2010

Мне не хватает опыта работы с HTML с использованием C ++. Я не уверен, что это ответит на ваш вопрос, но вы могли бы сделать следующее

  1. перечислить все элементы, используя doc-> all
  2. для каждого IHtmlElement вы можете сравнить тэг с мета (используйте IHtmlElement :: get_tagName)
  3. для этих метатегов вы можете получить и установить свойство с помощью методов IHtmlElement :: getAttribute и setAttribute)

Или

  1. Напишите функцию Javascript, которая принимает имя и значение свойства. Это должно быть в состоянии обновить метатег у вас
  2. Затем вы можете получить объект сценария, используя IHtmlDocument2 :: get_script в качестве IDispatch
  3. Используйте эту диспетчеризацию сценария для вызова функции JavaScript.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...