2010-04-14 4 views
1

Je dois ajouter des "annotations" aux documents HTML existants - mieux sous la forme de valeurs de propriété de chaîne Je peux lire & écrire par nom.Fichier HTML: ajouter des annotations via IHTMLDocument

Apparemment (pour moi), les éléments meta dans l'en-tête semblent être la voie commune - à savoir l'ajout/modification des éléments tels que

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

Question 1: Ist que "acceptable"/ok, ou est existe-t-il un meilleur moyen d'ajouter des méta-données?

J'ai un peu d'expérience avec le fait d'obtenir/mut (il) de contenu HTML via le document dans un contrôle de navigateur Web. Pour cette tâche, je l'ai déjà chargé le document HTML dans un objet HTMLDocument, mais je ne suis pas sûr de savoir comment continuer:

// what I have: 

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

// ... what now? 

Questions 2: devrais-je utiliser autre chose que HTMLDocument?

Questions 3..N: Comment puis-je obtenir l'élément head? Comment obtenir la valeur d'un méta-élément avec un nom donné? Comment définir la valeur d'un méta-élément (en ajoutant l'élément si et seulement s'il n'existe pas encore)?

doc->all retourne une collection de tous les tags que je peux énumérer, même si les rendements de comptage 0. Je pourrais scanner que pour head, puis scannez que pour tous meta où le nom commence par une chaîne, etc. - mais cela se sent très maladroit.

Répondre

2

Je n'ai pas assez d'expérience de travail avec le langage HTML en C++. Je ne sais pas si cela répond à votre question, mais vous pouvez faire ce qui suit

  1. ENUM tous les éléments à l'aide doc-> tous
  2. pour chaque IHTMLElement vous pouvez comparer les tagname à meta (utiliser IHTMLElement :: get_tagName)
  3. pour ces balises meta, vous pouvez obtenir et définir la propriété en utilisant IHTMLElement :: getAttribute et méthodes setAttribute)

Ou

  1. Ecrire une fonction en Javascript qui accepte le nom et la valeur d'une propriété. Ceci devrait être capable de mettre à jour la balise META que vous avez
  2. Vous pouvez ensuite obtenir l'objet de script en utilisant IHtmlDocument2 :: get_script comme IDispatch
  3. Utilisez cette commande de script pour appeler votre fonction javascript.
Questions connexes