我是通过FOR XML的SQL语句得到的一个XmlReader,现在想把它Load到一个XmlDocument里面,但是这段XML有多个根节点,所以需要在上面再加一个根节点才可以,否则XmlDocument.Load的时候就会提示“此文档已具有 DocumentElement 节点。”我现在得做法是,创建一个XmlDocument,然后CreateElement("Root"),然后把原来的XML插入,但是最后一步不知道怎么做,望大虾们指点,我现在得代码如下:
xdTemp.CreateElement("Root");
XmlNode xnRoot = xdTemp.CreateElement("Root");
xdTemp.AppendChild(xnRoot); while (xrdr.Read())
{
XmlElement xe = xdTemp.CreateElement(xrdr.Name);
xe.InnerXml = xrdr.ReadInnerXml();
xdTemp.DocumentElement.AppendChild(xe);
}
xdTemp.CreateElement("Root");
XmlNode xnRoot = xdTemp.CreateElement("Root");
xdTemp.AppendChild(xnRoot); while (xrdr.Read())
{
XmlElement xe = xdTemp.CreateElement(xrdr.Name);
xe.InnerXml = xrdr.ReadInnerXml();
xdTemp.DocumentElement.AppendChild(xe);
}
while (!reader.EOF)
{
if(reader.IsStartElement())
sb.Append(reader.ReadOuterXml());
}
reader.Close();XmlDocument xmldoc = new XmlDocument();
string xmlstr = sb.ToString();
xmldoc.Load("<root>" + xmlstr + "</root>");
try{
string tmpfile=XmlFile + ".tmp";
XmlReader reader=new XmlReader(XmlFile, System.Text.Encoding.UTF8);
XmlWriter writer=new XmlWriter(tmpfile, System.Text.Encoding.UTF8);
writer.WriteStartElement("root");
reader.MoveToContent();
while( !reader.EOF ){
writer.WriteNode(reader,false);
}
writer.WriterEndElement();
writer.Close();
reader.Close();
System.IO.File.Copy(tmpfile, XmlFile, true);
System.IO.File.Delete(tmpfle);
}catch(XmlException ex){
// 处理 Xml 异常。
}catch(System.IO.IOException ex){
// 处理 文件访问和 IO 异常。
}
}