Html Agility Pack: l'impostazione di un valore di attributo di HtmlNode non si riflette in HtmlDocument

html-agility-pack setattribute

Domanda

In Html Agility Pack, quando imposto un attributo di un HtmlNode, dovrei vederlo in HtmlDocument da cui è stato selezionato il nodo?

Diciamo che htmlDocument è un HtmlDocument. Quindi il codice semplificato assomiglia a questo:

HtmlNode documentNode = htmlDocument.DocumentNode;
HtmlNodeCollection nodeCollection = documentNode.SelectNodes(someXPath);
foreach(var node in nodeCollection)
   if(SomeCondition(node))
       node.SetAttributeValue("class","something");

Ora, vedo l'attributo di classe di modifica del nodo, ma non vedo questa modifica riflessa nell'html di htmlDocument.

Risposta accettata

In realtà era un caso di ProgrammerTooStupidException :(

Ho usato una classe MyHtmlPage, con una proprietà Html e una DocumentProperty.

_html = theHtml;
_htmlDocument = new HtmlDocument();
HtmlDocument.LoadHtml(theHtml)l
_documentNode = HtmlDocument.DocumentNode;

Ora, con la manipolazione del co-core, il DocumentNode non ha avuto alcun effetto sul valore di _html.

Pubblicando questa risposta per cancellare il nome di HAP.




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é