Conversione HTML Agility Pack in XML <script> corruption

c# html-agility-pack linq-to-xml

Domanda

Ho un file HTML con uno <script> in esso:

<html>
   <script type="application/custom+xml">
   <my><xml><goes><here/></goes></xml></my>
   </script>
</html>

Lo analizzo con HTML Agility Pack e poi lo converto in XML.

<html>
   <script type="application/custom+xml">
   <my><xml><goes><here/></goes></xml></my>
   </script>
</html>

Quindi desidero utilizzare LINQ-to-XML per esaminare il contenuto del tag script che dovrebbe contenere il mio XML come CDATA. Ma HTML Agility Pack lo rovina in qualche modo e finisco con questo XML sfuggito:

<html>
   <script type="application/custom+xml">
   <my><xml><goes><here/></goes></xml></my>
   </script>
</html>

Qualcuno sa come posso dire a HTML Agility Pack di non sfuggire al contenuto del tag script ?

Risposta accettata

È piuttosto semplice, per impostazione predefinita AgilityPack è impostato per trattare il contenuto dei tag di script come CData, questo viene fatto nel costruttore statico della classe HtmlNode in questo modo:

ElementsFlags.Add("script", HtmlElementFlag.CData);

Per cambiare questo non è necessario modificare AgilityPack, tutto ciò che serve è una cosa prima del codice, o solo una volta all'avvio del programma

ElementsFlags.Add("script", HtmlElementFlag.CData);

Aggiungilo prima del tuo codice, così funziona per me.




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é