Exploration d'un document de métadonnées en langage C : Différence entre versions
De Wicri Manuel
imported>Jacques Ducloy (→Accès à un noeud par son nom de balise) |
imported>Jacques Ducloy (→Accès aux données textuelles) |
||
Ligne 82 : | Ligne 82 : | ||
==Accès aux données textuelles== | ==Accès aux données textuelles== | ||
===Fonction SxmlLeafText=== | ===Fonction SxmlLeafText=== | ||
+ | |||
+ | ==Points particuliers à Dilib== | ||
+ | |||
+ | ===Le type Buffer=== | ||
+ | Un type Buffer a été introduit pour gérer les chaînes de longueur variables qui sont difficiles à gérer en langage C. |
Version du 23 juin 2020 à 14:24
Exploration d'un document de métadonnées en langage C < = Exploration d'un document XML en langage C |
Sommaire
Exemples avec des serveurs d'exploration PubMed
Dans ce module nous traiterons des documents issus d'un serveur d'exploration PubMed dans lequel les documents utilisent 2 DTD : PubMed et TEI.
Voici un exemple de document :
Une des première rubriques donne un identifiant nommé RBID (Reference Bibliographique IDentifieur), ici :
- RBID : pubmed:22994451
Pour récupérer ce document, on peut faire :
EXPLOR_AREA=$WICRI_ROOT/Sante/explor/GrippeBelgique.storage/GrippeBelgiqueV2
HfdIndexSelect -h $EXPLOR_AREA/Data/Main/Exploration/RBID.i \
-Sk "pubmed:22994451" \
| HfdSelect -Kh $EXPLOR_AREA/Data/Main/Exploration/biblio.hfd \
| SxmlIndent
Accès à un noeud par son nom de balise
Fonction SxmlGetFirstChildByTagName
- Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlGetFirstChildByTagName(SxmlNode *node, char *tag);
Exemple, pour extraire les métadonnées pubmed d'un flot de données ScienceExplor.
#include "SxmlNode.h"
main()
{
SxmlNode *docu ,*pubmed;
while(docu=SxmlInputNextDocumentElement())
{
if (pubmed=SxmlGetFirstChildByTagName(docu, "pubmed"))
{SxmlPrint(pubmed);putchar('\n');
};
}
Fonction SxmlGetFirstDescendantByTagName
Cette fonction permet d'atteindre le premier descendant d'un nœud dont le nom est identique au paramètre.
- Synopsis
#include "SxmlNode.h"
SxmlNode *SxmlGetFirstDescendantByTagName(SxmlNode *node, char *tag);
Exemple, pour extraire les résumés d'un flot de documents.
#include "SxmlNode.h"
main()
{
SxmlNode *docu ,*abstract;
while(docu=SxmlInputNextDocumentElement())
{
if (abstract=SxmlGetFirstDescendantByTagName(docu, "Abstract"))
{SxmlPrint(abstract);putchar('\n');
};
}
Accès aux données textuelles
Fonction SxmlLeafText
Points particuliers à Dilib
Le type Buffer
Un type Buffer a été introduit pour gérer les chaînes de longueur variables qui sont difficiles à gérer en langage C.