2014-02-01 6 views
0

Я использую XML в качестве обсуждения форума в ASP.NET. Я пытаюсь добавить функциональность для обновления комментариев. Моя структура XML заключается в следующем:Невозможно заменить дочерний XmlDocument

<forum> 
<author id="1"> 
    <comment id="0" idUser="19"> 
    <name>....</name> 
    <date>....</date> 
    <message>...</message> 
    </comment> 
    <comment id="1" idUser="4"> 
    .... 
    </comment> 
</author> 
<author id="2"> 
    .... 
</author> 
</forum> 

И мой код:

protected void btnEditComment_Click(object sender, EventArgs e) 
{ 
    if (messageTxb.Text!="" && nameTxb.Text!="") 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(Server.MapPath("~/App_Data/forum.xml")); 
     XmlNode newComment = (XmlNode)Session["Comment"]; 
     XmlNode oldComment = doc.SelectSingleNode(string.Format("//author[@id={0}]/comment[@id={1}]",Request.QueryString["id"],newComment.Attributes["id"].Value)); 
     newComment.ChildNodes[0].InnerText = nameTxb.Text.Trim(); 
     newComment.ChildNodes[1].InnerText = string.Format("{0:D}", DateTime.Now); 
     newComment.ChildNodes[2].InnerText = messageTxb.Text.Trim(); 
     oldComment.ParentNode.ReplaceChild(newComment, oldComment); 
     doc.Save(Server.MapPath("~/App_Data/forum.xml")); 
     Repeater1.DataBind(); 
     Response.Redirect(string.Format("~/user/Autor.aspx?id={0}", Request.QueryString["id"])); 
    } 
} 

Я получаю ошибку

'Узел должен быть вставлен от другого контекста документа.

Это происходит, когда я пытаюсь использовать метод replaceChild.

ответ

0

попытайтесь заменить эту строку: oldComment.ParentNode.ReplaceChild (doc.ImportNode (newComment, true), oldComment);

Смежные вопросы