2012-07-31 2 views
0

J'essaie d'insérer un nouveau noeud dans le document en utilisant htmlagilitypack. Je lis le document à partir du flux, insérez le nœud puis retourner le document comme un objet FileContentResult:Insertion d'un nouveau noeud dans un document html dans C#

HtmlDocument ndoc = new HtmlDocument(); 
ndoc.Load(stream); 

HtmlNode usern = HtmlNode.CreateNode("<img .... />"); 
usern.Attributes.Add("onclick", "javascript:document.location.href='/Home/Index';"); 
ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern); 

using (MemoryStream ms = new MemoryStream()) 
{ 
    ndoc.Save(ms); 
    ms.Seek(0, System.IO.SeekOrigin.Begin); 
    fileBytes = ms.ToArray(); 
} 

FileContentResult file = File(fileBytes, "text/html"); 
return file; 

Problème: nouveau nœud (img) n'est pas insérait. Mon contenu de pied de page a disparu si j'utilise ce code et si je viens de lire le document du flux et de revenir en tant que FileContentResult alors tout est parfait. Je veux savoir quel est le problème avec ce code ou où je me trompe?

Répondre

0

Jetez un oeil à HTML Agility pack create new HTMLNode.

Ceci montre comment créer correctement un nouveau noeud. D'après mon expérience, leur code fonctionne bien. Similaire à jQuery le prenant pas à pas. Bonne chance!

+0

A savoir, vous devez utiliser le nœud actuel pour créer un nouvel élément. – jamesbar2

0

essayer de changer

HtmlNode usern = HtmlNode.CreateNode("<img .... />"); 

juste img

HtmlNode usern = HtmlNode.CreateNode("<img></img>"); 

et ajoutez cette

ndoc.OptionWriteEmptyNodes = true; 
+0

merci, j'ai essayé mais ne fonctionne pas –

+0

@King Kong essayer ce ndoc.OptionOutputAsXml = true; –

+0

Oui cela fonctionne, mais le contenu du pied de page est toujours manquant –

0

je suis tombé sur la même question, a résolu en passant l'objet clone. il suffit de modifier la ligne

ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern); 

à

ndoc.DocumentNode.SelectSingleNode("id('main')").AppendChild(usern.CloneNode(true)); 
Questions connexes