Sostituzione di un tag InnerText di div HTML utilizzando HTML Agility Pack

asp.net c# html-agility-pack html-parsing

Domanda

Sto utilizzando l'HTML Agility Pack per manipolare e modificare un documento HTML. Voglio cambiare il testo nel campo come questo:

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

Sto cercando di aggiornare il testo all'interno di questo div per essere:

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

Ho provato a farlo utilizzando il seguente codice, ma non sembra funzionare perché la proprietà InnerText è di sola lettura.

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

Cosa sto facendo di sbagliato qui? Come accennato in precedenza, InnerText è un campo di sola lettura, sebbene sia scritto nella documentazione che "ottiene o imposta". Esiste un metodo alternativo attraverso il quale ciò può essere fatto?

Risposta accettata

L'espressione è usata qui: //div[@id='Div1'] seleziona il div , che non è un HtmlTextNode , quindi la variabile hNode contiene null nell'esempio.

La proprietà InnerText è di sola lettura, ma HtmlTextNode ha una proprietà Text che può essere utilizzata per impostare il valore necessario. Ma prima di questo dovresti ottenere quel nodo di testo. Questo potrebbe essere fatto facilmente con questa espressione: //div[@id='Div1']//b//text() :

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



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché