Comment faire pour modifier le contenu de la balise HTML en Java?
Comment puis-je modifier le contenu HTML de la balise en Java? Par exemple:
avant:
<html>
<head>
</head>
<body>
<div>text<div>**text**</div>text</div>
</body>
</html>
après:
<html>
<head>
</head>
<body>
<div>text<div>**new text**</div>text</div>
</body>
</html>
J'ai essayé JTidy, mais il ne prend pas en charge getTextContent
. Est-il une autre solution?
Merci, je veux analyser pas bien formé HTML. J'ai essayé TagSoup, mais quand j'ai ce code:
<body>
sometext <div>text</div>
</body>
et je veux changer "sometext" à "someAnotherText," et quand j'utilise {bodyNode}.getTextContent()
il me donne: "sometext texte"; lorsque j'utilise setTextContet("someAnotherText"+{bodyNode}.getTextContent())
, et sérialiser ces structure, le résultat est <body>someAnotherText sometext text</body>
, sans <div>
balises. C'est un problème pour moi.
Vous devez vous connecter pour publier un commentaire.
Sauf si vous êtes absolument sûr que le HTML sera valide et bien formé, je voudrais vous recommandons vivement d'utiliser un analyseur HTML, quelque chose comme TagSoup, Jericho, NekoHTML, Analyseur HTML, etc, les deux premiers étant particulièrement puissant pour analyser n'importe quel genre de merde 🙂
Par exemple, avec Analyseur HTML (parce que la mise en œuvre est très facile), à l'aide d'un visiteur, fournir votre propre
NodeVisitor
:Ensuite, créez un
Parser
, analyser la chaîne HTML et visiter le retour de la liste des nœuds:C'est juste une façon de le mettre en œuvre, assez simple.
À condition que votre HTML est un format XML bien formé (si elle n'est pas alors vous pouvez utiliser JTidy à tidify), vous pouvez l'analyser en utilisant DOM ou SAX parser. DOM est probablement plus facile si votre document n'est pas énorme.
Quelque chose comme cela fera l'affaire si votre texte est le seul enfant d'un noeud avec id="id":
Vous pouvez d enregistrer par la suite dans un fichier.
process(..)
méthode.Il y a un tas de l'Open source Java HTML analyseurs répertoriés ici.
Je ne suis pas sûr de ce qui est le plus couramment utilisé, mais cette une (juste appelé analyseur HTML) sera probablement faire ce que vous voulez. Il a des fonctions pour modifier votre arbre et écrire à revenir.
En général vous avez un document HTML que vous souhaitez extraire des données à partir d'. Vous savez généralement la structure du document HTML.
Il y a plusieurs analyseur de bibliothèques, mais le meilleur est Jsoup ,vous pouvez utiliser les méthodes du DOM pour naviguer dans votre document et mettez à jour les valeurs.Dans votre cas, vous avez besoin pour lire votre fichier et d'utiliser l'attribut setter.
Exemple de fichier XHTML :
De code Java :
De sortie après l'exécution: