2010-10-01 26 views
7

Próbowałem ustawić innerText stosując następujące, ale nie wolno mi ustawić właściwość innerText:Set innerText z HtmlAgilityPack

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

Powodem tego jest to, że chcę tylko, aby usunąć tekst, nie rzeczywiste elementy:

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

Odpowiedz

5

Ja sam wpadłem na ten sam problem. Mimo, że dokumentacja mówi, get or set, to wyraźnie jest tylko do odczytu. Ale wewnętrzny tekst odnosi się do WSZYSTKIEGO między tagami. Więc jeśli masz setki dzieci, będzie tam cały ich tekst, w tym rzeczywiste znaczniki. Myślę, że aby zrobić to, czego ty i ja chcemy, musimy użyć właściwości Text. Uzyskaj rzeczywisty znacznik i użyj właściwości Tekst.

Więc może

HtmlTextNode.Text = ""; 

Należy pamiętać, że można tylko ustawić tekst, jeśli jest typu HtmlTextNode.

lub myślę, że możesz uzyskać lepszy wynik, jeśli po prostu usuniesz tag i zatrzymasz wnuki.

HtmlNode.Parent.Remove(textTagYouWantRemoved, true); 
Powiązane problemy