MISE À JOUR
J'ai trouvé une solution à base de pur X-Ray sans qu'il soit nécessaire de remplacer <br>
balises html avant en utilisant X-Ray (voir ci-dessous la solution d'origine). De cette façon, vous allez utiliser les fonctions filter
de X-Ray en plus de l'intégration de fonctions X-Ray les unes dans les autres (sorte d'imbrication).
Tout d'abord, nous allons remplacer les balises <br>
en format html original en utilisant la fonction de filtre personnalisée (appelée replaceLineBreak
) définie pour la radiographie. Deuxièmement, nous allons utiliser le résultat de replace avec la reconstruction de la structure html d'origine (en rajoutant <span id="scraped-portion">
) comme premier argument d'un appel X-Ray.
J'espère que vous l'aimerez!
var x = Xray({
filters: {
replaceLineBreak: function (value) { return value.replace(/\<br\>/g, ';'); },
}
});
var html =
`
<span id="scraped-portion"><span class="bold">NodeJS</span><br>
<span class="bold">Version:</span> 8<br><span class="bold">Date released:</span> 2017 Jan<br><span class="bold">Description:</span>Some other text
</span>
`;
x(html,
'#[email protected] | replaceLineBreak' /// Filter function called to replace '<br>' to ';'
)(function (err, obj) {
x(`<span id="scraped-portion">${obj}</span>`, /// Restore oroginal html structure to have the outer span with id 'scraped-portion
'#scraped-portion'
)(function (err2, obj2) { res.header("Content-Type", "text/html; charset=utf-8"); res.write(obj2); res.end(); })
});
Résultant la chaîne suivante:
NodeJS; Version: 8;Date released: 2017 Jan;Description:Some other text
SOLUTION ORIGINAL
pourquoi ne pas remplacer toutes les occurences de <br>
balises avant de traiter le code html par X-Ray ?
function tst(req, res) {
var x = Xray();
var html =
`
<span id="scraped-portion"><span class="bold">NodeJS</span><br>
<span class="bold">Version:</span> 8<br><span class="bold">Date released:</span> 2017 Jan<br><span class="bold">Description:</span>Some other text
</span>
`.replace(/\<br\>/g, ';');
x
(
html,
['span#scraped-portion']
)(function (err, obj) { res.header("Content-Type", "text/html; charset=utf-8"); res.write(JSON.stringify(obj, null, 4)); res.end(); })
;
}
Ensuite, votre code entraînerait quelque chose comme ça
NodeJS;\n Version: 8;Date released: 2017 Jan;Description:Some other text\n
qui semble à peu près à répondre à vos besoins
peut-être un [filtre] (https://github.com/matthewmueller/rayons X # filtres)? –