SlideShare a Scribd company logo
1 of 5
Download to read offline
Mémo : Analyse de données XML et HTML dans Openrefine 1/5
Mémo : Analyse de données XML et HTML dans Openrefine
Auteur : Mathieu Saby
Licence CC-BY
Historique
V1.2 8/05/2019 Traduction complétée
V1.1 15/03/2019 Avancement de traduction, exemples revus
V1 24/10/2018 Création, traduction à finir
La version d’Openrefine décrite est la 3.1.
Table des matières
1. Analyse de données XML et HTML......................................................................................................................................................................................................2
1.1. Les sélecteurs jsoup (traduction en cours)..................................................................................................................................................................................................2
2. Utilisation de Jython...............................................................................................................................................................................................................................5
Mémo : Analyse de données XML et HTML dans Openrefine 2/5
1. Analyse de données XML et HTML
La fonction select() permet de sélectionner des éléments issus de parseHtml() ou de parseXml() en utilisant la syntaxe du parseur jsoup (https://jsoup.org).
Jsoup utilise des sélecteurs insensibles à la casse, identiques aux sélecteurs CSS3 et Jquery.
Voir la documentation complète : https://jsoup.org/apidocs/org/jsoup/select/Selector.html
Interface de démonstration (pour tester une expression jsoup) : https://try.jsoup.org/
1.1. Les sélecteurs jsoup (traduction en cours)
Un sélecteur est une chaîne de sélecteurs simples séparés par des combinateurs. Les sélecteurs sont insensibles à la casse. Le sélecteur universel (*) est
implicite lorsqu’aucun sélecteur d’élément n’est fourni (ex : *.header et .header sont équivalents)
Sélecteurs d’éléments
Peuvent être combinés dans n’importe quel ordre. Ex : div.header[title] = div[title].header
Motif Trouve Exemple
* N’importe quel élément *
tag Les éléments de type tag div
*|E Les éléments de type E dans le namespace ns *|name trouve les éléments <fb:name>
ns|E Les éléments de type E dans le namespace ns fb|name trouve les éléments <fb:name>
#id Les éléments avec un attribut "id" div#x trouve les éléments <div id="x">
.class Les éléments avec une classe "class" div.x trouve les éléments <div class="x">
[attr] Les éléments avec un attribut "attr" a[href] trouve les éléments <a href=…>
[^attrPrefix] Les éléments avec un attribu commençant par "attrPrefix" div[^data-] trouve les éléments <div data-…=…>
[attr=val] Les éléments avec un attribut "attr" de valeur égale à "val" img[width=500], a[rel=nofollow]
[attr="val"] Les éléments avec un attribut "attr" de valeur égale à "val" span[nom="Martin"], a[rel="nofollow"]
[attr^=valPrefix] Les éléments avec un attribut "attr" de valeur commençant par "valPrefix" a[href^=http:]
[attr$=valSuffix] Les éléments avec un attribut "attr" de valeur se terminant par "valSuffix" img[src$=.png]
[attr*=valContaining] Les éléments avec un attribut "attr" de valeur contenant "valContaining" a[href*=/search/]
[attr~=regex] Les éléments avec un attribut "attr" de valeur correspondant à une expression régulière. img[src~=(?i).(png|jpe?g)]
Mémo : Analyse de données XML et HTML dans Openrefine 3/5
Sélecteurs de combinaison
Motif Trouve Exemple
E F Les éléments F descendant d’un élément E div a, .logo h1
E > F Les éléments F fils d’un élément E ol > li
E + F Les éléments F immédiatement précédés par un élément frère E li + li, div.head + div
E ~ F Les éléments F précédés par un élément frère E h1 ~ p
E, F, G Les éléments E ou F ou G a[href], div, h3
Pseudo-sélecteurs
Peuvent être combinés entre eux dans n’importe quel ordre, et avec les autres sélecteurs
Motif Trouve Exemple
:lt(n) Les éléments dont l’index parmi les éléments frères est inférieur à n (0 pour le 1er
) td:lt(3) trouve les 3 premières colonnes de chaque ligne
:gt(n) Les éléments dont l’index parmi les éléments frères est supérieur à n (0 pour le 1er
) td:gt(1) trouve toutes les colonnes de chaque ligne sauf la 1re
:eq(n) Les éléments dont l’index parmi les éléments frères est égal à n (0 pour le 1er
) td:eq(0) trouve la 1re
colonne de chaque ligne
:has(selector) Les éléments contenant au moins un des éléments correspondant à selector div:has(p) trouve les div contenant des p
:not(selector) Les éléments ne correspondant pas à selector
div:not(.logo) trouve les div n’ayant pas la classe « logo »
div:not(:has(p)) trouve les div ne contenant pas des p.
:contains(text)
Les éléments contenant le texte text (recherche insensible à la casse), directement ou dans un
de leurs descendants
p:contains(hell) trouve les p contenant le texte Hello
:matches(regex)
Les éléments correspondant à l’expression régulière regex, directement ou dans un de leurs
descendants le texte text. Les classes de caractères doivent être échappés par . Les
modificateurs sont indiqués dans un groupe (?) précédant le motif
td:matches(d+) trouve les colonnes contenant des chiffres
div:matches((?i)hell) trouve les div contenant "hell" mais
aussi "HELLO".
:containsOwn(text) Les éléments contenant directement le texte text (recherche insensible à la casse)
p:containsOwn(hello) trouve les éléments p contenant
directement "hello"
:matchesOwn(regex) Les éléments correspondant directement à l’expression régulière regex
td:matchesOwn(d+) trouve les colonnes contenant
directement des chiffres.
div:matchesOwn((?i)hell) trouve les div contenant
directement "hell" mais aussi "HELLO".
:containsData(data)
Les éléments contenant les données data (inclut les nœuds de type script, style, comment
mais exclut les nœuds de type texte), directement ou dans un de leur descendant.
.
script:contains(hello) trouve des éléments script contenant
"hello"
:matchText Traite les nœuds texte comme des éléments auxquels appliquer d’autres sélecteurs
p:matchText:first-child appliqué à <p>oui <br/> non</p>
trouve la partie de <p> précédant <br/> : "oui"
:matchText appliqué à <p>oui</p><div><p>non</p></div>
trouve [oui, non]
Mémo : Analyse de données XML et HTML dans Openrefine 4/5
Pseudo-sélecteurs structuraux
Motif Trouve Exemple
:root L’élément racine du document. En HTML l’élément html :root
:nth-child(an+b)
Les éléments de position (an+b) dans la liste de tous les enfants (quelque soit leur type) de
leur parent. a et b sont des entiers positifs, négatifs ou nuls, n est un compteur démarrant à 0.
La position du 1er
enfant de la liste est 1. an peut être omis pour trouver les éléments de
position (b) dans la liste de tous les enfants de leur parent
tr:nth-child(2n+1) trouve chaque ligne impaire d’un tableau.
:nth-child(10n-1) trouve le 9e
, le 19e
, le 29e
élément…
li:nth-child(5) trouve le 5e
élément li
:nth-last-child(an+b)
Même principe que :nth-child en comptant à rebours à partir du dernier élément de la liste de
tous les enfants
tr:nth-last-child(-n+2) trouve les 2 dernières lignes d’un
tableau
:nth-of-type(an+b)
Même principe que :nth-child en en prenant en compte que la liste des enfants du même type
que l’élément cible
img:nth-of-type(2n+1)
:nth-last-of-type(an+b)
Même principe que :nth-last-child en ne prenant en compte que la liste des enfants du même
type que l’élément cible
img:nth-last-of-type(2n+1)
:first-child Les éléments qui sont le 1er
enfant d’un autre élément div > p:first-child
:last-child Les éléments qui sont le dernier enfant d’un autre élément ol > li:last-child
:first-of-type Les éléments qui sont le 1er
enfant du même type dans la liste des enfants de leur parent dl dt:first-of-type
:last-of-type Les éléments qui sont le dernier enfant du même type dans la liste des enfants de leur parent tr > td:last-of-type
:only-child Les éléments qui sont le seul enfant de leur parent
:only-of-type Les éléments qui sont le seul enfant de leur type de leur parent
:empty Les éléments sans enfant
Mémo : Analyse de données XML et HTML dans Openrefine 5/5
2. Utilisation de Jython
Il est également possible d’écrire du code en Jython en utilisant la librarie xml.etree.
Ex : récupérer le titre et l’auteur de livres écrits par des auteurs anglais
from xml.etree import ElementTree
element = ElementTree.fromstring(value.encode("utf-8"))
listeResultats = element.findall(".//author[@country='GB']/..")
for resultat in listeResultats:
return (resultat.find('title').text + " / " + resultat.find('author').text)
Résultat :
value from xml.etree import ElementT ...
<firstlist><book><title>Le Seigneur des anneaux</title><author country="GB">Tolkien</author></book><book><title>La
peste</title><author country="FR">Camus</author></book></firstlist> Le Seigneur des anneaux / Tolkien
<secondlist><book><title>Hamlet</title><author
country="GB">Shakespeare</author></book><book><title>Portnoy</title><author
country="US">Roth</author></book></secondlist> Hamlet / Shakespeare

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Analyse de données XML et HTML dans Openrefine

  • 1. Mémo : Analyse de données XML et HTML dans Openrefine 1/5 Mémo : Analyse de données XML et HTML dans Openrefine Auteur : Mathieu Saby Licence CC-BY Historique V1.2 8/05/2019 Traduction complétée V1.1 15/03/2019 Avancement de traduction, exemples revus V1 24/10/2018 Création, traduction à finir La version d’Openrefine décrite est la 3.1. Table des matières 1. Analyse de données XML et HTML......................................................................................................................................................................................................2 1.1. Les sélecteurs jsoup (traduction en cours)..................................................................................................................................................................................................2 2. Utilisation de Jython...............................................................................................................................................................................................................................5
  • 2. Mémo : Analyse de données XML et HTML dans Openrefine 2/5 1. Analyse de données XML et HTML La fonction select() permet de sélectionner des éléments issus de parseHtml() ou de parseXml() en utilisant la syntaxe du parseur jsoup (https://jsoup.org). Jsoup utilise des sélecteurs insensibles à la casse, identiques aux sélecteurs CSS3 et Jquery. Voir la documentation complète : https://jsoup.org/apidocs/org/jsoup/select/Selector.html Interface de démonstration (pour tester une expression jsoup) : https://try.jsoup.org/ 1.1. Les sélecteurs jsoup (traduction en cours) Un sélecteur est une chaîne de sélecteurs simples séparés par des combinateurs. Les sélecteurs sont insensibles à la casse. Le sélecteur universel (*) est implicite lorsqu’aucun sélecteur d’élément n’est fourni (ex : *.header et .header sont équivalents) Sélecteurs d’éléments Peuvent être combinés dans n’importe quel ordre. Ex : div.header[title] = div[title].header Motif Trouve Exemple * N’importe quel élément * tag Les éléments de type tag div *|E Les éléments de type E dans le namespace ns *|name trouve les éléments <fb:name> ns|E Les éléments de type E dans le namespace ns fb|name trouve les éléments <fb:name> #id Les éléments avec un attribut "id" div#x trouve les éléments <div id="x"> .class Les éléments avec une classe "class" div.x trouve les éléments <div class="x"> [attr] Les éléments avec un attribut "attr" a[href] trouve les éléments <a href=…> [^attrPrefix] Les éléments avec un attribu commençant par "attrPrefix" div[^data-] trouve les éléments <div data-…=…> [attr=val] Les éléments avec un attribut "attr" de valeur égale à "val" img[width=500], a[rel=nofollow] [attr="val"] Les éléments avec un attribut "attr" de valeur égale à "val" span[nom="Martin"], a[rel="nofollow"] [attr^=valPrefix] Les éléments avec un attribut "attr" de valeur commençant par "valPrefix" a[href^=http:] [attr$=valSuffix] Les éléments avec un attribut "attr" de valeur se terminant par "valSuffix" img[src$=.png] [attr*=valContaining] Les éléments avec un attribut "attr" de valeur contenant "valContaining" a[href*=/search/] [attr~=regex] Les éléments avec un attribut "attr" de valeur correspondant à une expression régulière. img[src~=(?i).(png|jpe?g)]
  • 3. Mémo : Analyse de données XML et HTML dans Openrefine 3/5 Sélecteurs de combinaison Motif Trouve Exemple E F Les éléments F descendant d’un élément E div a, .logo h1 E > F Les éléments F fils d’un élément E ol > li E + F Les éléments F immédiatement précédés par un élément frère E li + li, div.head + div E ~ F Les éléments F précédés par un élément frère E h1 ~ p E, F, G Les éléments E ou F ou G a[href], div, h3 Pseudo-sélecteurs Peuvent être combinés entre eux dans n’importe quel ordre, et avec les autres sélecteurs Motif Trouve Exemple :lt(n) Les éléments dont l’index parmi les éléments frères est inférieur à n (0 pour le 1er ) td:lt(3) trouve les 3 premières colonnes de chaque ligne :gt(n) Les éléments dont l’index parmi les éléments frères est supérieur à n (0 pour le 1er ) td:gt(1) trouve toutes les colonnes de chaque ligne sauf la 1re :eq(n) Les éléments dont l’index parmi les éléments frères est égal à n (0 pour le 1er ) td:eq(0) trouve la 1re colonne de chaque ligne :has(selector) Les éléments contenant au moins un des éléments correspondant à selector div:has(p) trouve les div contenant des p :not(selector) Les éléments ne correspondant pas à selector div:not(.logo) trouve les div n’ayant pas la classe « logo » div:not(:has(p)) trouve les div ne contenant pas des p. :contains(text) Les éléments contenant le texte text (recherche insensible à la casse), directement ou dans un de leurs descendants p:contains(hell) trouve les p contenant le texte Hello :matches(regex) Les éléments correspondant à l’expression régulière regex, directement ou dans un de leurs descendants le texte text. Les classes de caractères doivent être échappés par . Les modificateurs sont indiqués dans un groupe (?) précédant le motif td:matches(d+) trouve les colonnes contenant des chiffres div:matches((?i)hell) trouve les div contenant "hell" mais aussi "HELLO". :containsOwn(text) Les éléments contenant directement le texte text (recherche insensible à la casse) p:containsOwn(hello) trouve les éléments p contenant directement "hello" :matchesOwn(regex) Les éléments correspondant directement à l’expression régulière regex td:matchesOwn(d+) trouve les colonnes contenant directement des chiffres. div:matchesOwn((?i)hell) trouve les div contenant directement "hell" mais aussi "HELLO". :containsData(data) Les éléments contenant les données data (inclut les nœuds de type script, style, comment mais exclut les nœuds de type texte), directement ou dans un de leur descendant. . script:contains(hello) trouve des éléments script contenant "hello" :matchText Traite les nœuds texte comme des éléments auxquels appliquer d’autres sélecteurs p:matchText:first-child appliqué à <p>oui <br/> non</p> trouve la partie de <p> précédant <br/> : "oui" :matchText appliqué à <p>oui</p><div><p>non</p></div> trouve [oui, non]
  • 4. Mémo : Analyse de données XML et HTML dans Openrefine 4/5 Pseudo-sélecteurs structuraux Motif Trouve Exemple :root L’élément racine du document. En HTML l’élément html :root :nth-child(an+b) Les éléments de position (an+b) dans la liste de tous les enfants (quelque soit leur type) de leur parent. a et b sont des entiers positifs, négatifs ou nuls, n est un compteur démarrant à 0. La position du 1er enfant de la liste est 1. an peut être omis pour trouver les éléments de position (b) dans la liste de tous les enfants de leur parent tr:nth-child(2n+1) trouve chaque ligne impaire d’un tableau. :nth-child(10n-1) trouve le 9e , le 19e , le 29e élément… li:nth-child(5) trouve le 5e élément li :nth-last-child(an+b) Même principe que :nth-child en comptant à rebours à partir du dernier élément de la liste de tous les enfants tr:nth-last-child(-n+2) trouve les 2 dernières lignes d’un tableau :nth-of-type(an+b) Même principe que :nth-child en en prenant en compte que la liste des enfants du même type que l’élément cible img:nth-of-type(2n+1) :nth-last-of-type(an+b) Même principe que :nth-last-child en ne prenant en compte que la liste des enfants du même type que l’élément cible img:nth-last-of-type(2n+1) :first-child Les éléments qui sont le 1er enfant d’un autre élément div > p:first-child :last-child Les éléments qui sont le dernier enfant d’un autre élément ol > li:last-child :first-of-type Les éléments qui sont le 1er enfant du même type dans la liste des enfants de leur parent dl dt:first-of-type :last-of-type Les éléments qui sont le dernier enfant du même type dans la liste des enfants de leur parent tr > td:last-of-type :only-child Les éléments qui sont le seul enfant de leur parent :only-of-type Les éléments qui sont le seul enfant de leur type de leur parent :empty Les éléments sans enfant
  • 5. Mémo : Analyse de données XML et HTML dans Openrefine 5/5 2. Utilisation de Jython Il est également possible d’écrire du code en Jython en utilisant la librarie xml.etree. Ex : récupérer le titre et l’auteur de livres écrits par des auteurs anglais from xml.etree import ElementTree element = ElementTree.fromstring(value.encode("utf-8")) listeResultats = element.findall(".//author[@country='GB']/..") for resultat in listeResultats: return (resultat.find('title').text + " / " + resultat.find('author').text) Résultat : value from xml.etree import ElementT ... <firstlist><book><title>Le Seigneur des anneaux</title><author country="GB">Tolkien</author></book><book><title>La peste</title><author country="FR">Camus</author></book></firstlist> Le Seigneur des anneaux / Tolkien <secondlist><book><title>Hamlet</title><author country="GB">Shakespeare</author></book><book><title>Portnoy</title><author country="US">Roth</author></book></secondlist> Hamlet / Shakespeare