2012-02-01 18 views
6

Używam pakietu Agility Pack HTML do manipulowania i edytowania dokumentu HTML. Chcę zmienić tekst w takich dziedzinach, jak ten:Wymiana znacznika InnerText HTML div przy użyciu pakietu Agility HTML

<div id="Div1"><b>Some text here.</b><br></div> 

szukam zaktualizować tekst wewnątrz DIV być:

<div id="Div1"><b>Some other text.</b><br></div> 

Próbowałem to zrobić za pomocą następującego kodu , ale wygląda na to, że nie działa, ponieważ właściwość InnerText jest tylko do odczytu.

HtmlTextNode hNode = null; 
hNode = hDoc.DocumentNode.SelectSingleNode("//div[@id='Div1']") as HtmlTextNode; 
hNode.InnerText = "Some other text."; 
hDoc.Save("C:\FileName.html"); 

Co ja tu robię źle? Jak wspomniano powyżej, InnerText jest polem tylko do odczytu, chociaż jest napisane w dokumentacji, którą "pobiera lub ustawia". Czy istnieje alternatywna metoda, dzięki której można to zrobić?

Odpowiedz

9

Wyrażenie użyte jest tutaj: //div[@id='Div1'] wybiera div, który nie jest HtmlTextNode, więc zmienna hNode posiada null w swoim przykładzie.

Właściwość InnerText jest naprawdę tylko do odczytu, ale HtmlTextNode ma właściwość Text, która może być użyta do ustawienia wymaganej wartości. Ale przedtem powinieneś dostać ten węzeł tekstowy. Można to łatwo zrobić za pomocą tego wyrażenia: //div[@id='Div1']//b//text():

hNode = hDoc.DocumentNode 
    .SelectSingleNode("//div[@id='Div1']//b//text()") as HtmlTextNode; 
hNode.Text = "Some other text."; 
+0

Działa jak urok! Dzięki wielkie... – Vivek

Powiązane problemy