2010-10-01 7 views
7

J'ai essayé de mettre InnerText en utilisant ce qui suit, mais je ne suis pas autorisé à définir la propriété InnerText:Set InnerText avec HtmlAgilityPack

node.InnerText = node.InnerText.Remove(100) + ".."; 

La raison est que je veux seulement supprimer le texte, éléments non réels:

<div> 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
    <img src="" /> 
</div> 

Répondre

5

Je viens de rencontrer moi-même le même problème. Bien que la documentation indique "get" ou "set", elle est clairement en lecture seule. Mais le texte interne s'applique à TOUT entre les balises. Donc, si vous avez des centaines d'enfants, TOUS leurs textes, y compris les tags réels seront là. Je pense que pour faire ce que vous et moi voulons, nous devons utiliser la propriété Text. Obtenez le tag réel et utilisez la propriété Text.

Alors peut-être

HtmlTextNode.Text = ""; 

S'il vous plaît noter que vous ne pouvez définir le texte si elle est de type HtmlTextNode.

ou je pense que vous pourriez obtenir un meilleur résultat si vous supprimez simplement l'étiquette et gardez les petits-enfants.

HtmlNode.Parent.Remove(textTagYouWantRemoved, true);