是这样,在生成xml文件时,出现开始标签与结束标签不一致,如开始标签是<loc> 而结束标签就乱了如<credfe.dff>什么的,而且有时还会出现多余标签如xml文档最后的标签是</urlset>那么生成完就有两个这样的标签如</urlset></urlset>出现两次,当然前提是,我的数据量很大,每个文件要5m左右,而且一次生成的文件数也很多在几百个文件吧,但是错误不是每个xml文件都有,只是个别的文件出现这样的问题,不知道是数据错误导致的,还是写文件时,我调试时用了些方法,如设置值为null,或调试时跳过些生成标签代码在往下走,怎么都不行,就是找不到原因,帮忙看下,可能是那里出了问题,谢谢,大概的生成xml代码如下。
#region 写数据
XmlDocument doc = new XmlDocument();
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(dec);
XmlElement root = doc.CreateElement("urlset");//根节点
doc.AppendChild(root);
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
try
{
DataRow dr = dt.Rows[i];
XmlElement url = doc.CreateElement("url");
root.AppendChild(url);
XmlElement loc = doc.CreateElement("loc");//子节点带值
loc.InnerText = dr["UrlLoc"].ToString();
url.AppendChild(loc);
//。。。这里可能还有很多节点,也有不止一个层级的节点,在此省略。
XmlElement HouseDecoration = doc.CreateElement("Decoration");//子节点带值
HouseDecoration.InnerText = dr["Decoration"].ToString();
url.AppendChild(HouseDecoration);
root.AppendChild(url);
}
catch (Exception ex)
{
Common.WritErrorLog(ex.ToString());
}
}
}
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
doc.Save(writer);
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
stream.Position = 0;
String content = reader.ReadToEnd();
content = content.Replace("encoding=\"utf-8\"?", "encoding=\"utf-8\" ?");
reader.Close();
stream.Close();
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
File.WriteAllText(@"磁盘路径", content, Encoding.UTF8);
#endregion