J'utilise HTML Agility Pack pour manipuler et éditer un document HTML. Je veux changer le texte dans le champ comme ceci:
<div id="Div1"><b>Some text here.</b><br></div>
Je cherche à mettre à jour le texte dans cette div pour être:
<div id="Div1"><b>Some other text.</b><br></div>
J'ai essayé de le faire en utilisant le code suivant, mais cela ne semble pas fonctionner car la propriété InnerText est en lecture seule.
HtmlTextNode hNode = null;
hNode = hDoc.DocumentNode.SelectSingleNode("//div[@id='Div1']") as HtmlTextNode;
hNode.InnerText = "Some other text.";
hDoc.Save("C:\FileName.html");
Qu'est-ce que je fais mal ici? Comme mentionné ci-dessus, InnerText est un champ en lecture seule, bien qu'il soit écrit dans la documentation qu'il "obtient ou définit". Y a-t-il une autre méthode par laquelle cela peut être fait?
L'expression est utilisée ici: //div[@id='Div1']
sélectionne le div
, qui n'est pas un HtmlTextNode
. hNode
variable hNode
est donc null
dans votre exemple.
La propriété InnerText
est vraiment en lecture seule, mais HtmlTextNode
a la propriété Text
qui peut être utilisée pour définir la valeur nécessaire. Mais avant cela, vous devriez obtenir ce noeud de texte. Cela pourrait être facilement fait avec cette expression: //div[@id='Div1']//b//text()
:
hNode = hDoc.DocumentNode
.SelectSingleNode("//div[@id='Div1']//b//text()") as HtmlTextNode;
hNode.Text = "Some other text.";