自已解决了! private void btnReadXml_Click(object sender, System.EventArgs e)
{
if(System.IO.File.Exists(Application.StartupPath+"\\~FavorCode.xml"))
{
XmlTextReader reader = new XmlTextReader(Application.StartupPath+"\\~FavorCode.xml");
XmlTextWriter write = new XmlTextWriter(Application.StartupPath+"\\~~FavorCode.xml",System.Text.Encoding.GetEncoding("GB2312"));
write.Formatting=Formatting.Indented;
reader.MoveToContent();
reader.WhitespaceHandling=WhitespaceHandling.None;
write.WriteStartDocument();
write.WriteStartElement(reader.Name);
write.WriteAttributes(reader,true);
reader.Read();
while(!reader.EOF) 
{
if(reader.NodeType==XmlNodeType.Element)
{
switch(reader.LocalName)
{
case "GeneralSettings":
write.WriteNode(reader,true);
break;
case "CodeCatag":
write.WriteStartElement("CodeCatag");
write.WriteAttributes(reader,true);
reader.Read();
break;
case "Code":
write.WriteStartElement("Code");
write.WriteAttributes(reader,true);
reader.Read();
break;
case "Article":
if(reader.GetAttribute("ID").Trim().Equals(this.txtArticleID.Text.Trim()))
{
write.WriteStartElement("Article");
write.WriteAttributeString("ID",reader.GetAttribute("ID"));
write.WriteElementString("Name",this.txtName.Text);
write.WriteElementString("Author",this.txtAuthor.Text);
write.WriteElementString("StoreDate",this.txtStoreDate.Text);
write.WriteStartElement("Detail");
write.WriteCData(this.rtxtXml.Text);
write.WriteEndElement();
write.WriteStartElement("Re");
write.WriteCData(this.rtxtXml.Text);
write.WriteEndElement();
write.WriteElementString("Level",reader.GetAttribute("ID"));
write.WriteEndElement();
reader.Read();
}
else
{
write.WriteNode(reader,true);
}
break;
default:
reader.Read();
break;
}
}
else if(reader.NodeType==XmlNodeType.EndElement)
{
switch(reader.LocalName)
{
case "CodeCatag":
write.WriteEndElement();
reader.Read();
break;
case "Code":
write.WriteEndElement();
reader.Read();
break;
default:
reader.Read();
break;
}
}
else
{
reader.Read();
}
}
write.WriteEndElement();
write.WriteEndDocument();
write.Flush();
write.Close();
reader.Close();
}
}
关键点:write.WriteNode(reader,true);这句中相当于执行了一次reader.Read();一个星期的努力! 我笨吧:)