2013-04-08 45 views
0

我有以下用于定义XML架构的代码。在保持线条一致方面存在问题。之前工作良好。XML架构将Sitemap绑定在一起

public static FileContentResult WriteTo(SiteMapFeed feedToFormat) 
{ 
    var siteMap = feedToFormat;   

    //TODO: DO something, next codes are just DEMO 
    var header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
     + Environment.NewLine + "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"" 
     + Environment.NewLine + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" 
     + Environment.NewLine + "xsi:schemaLocation=\"" 
     + Environment.NewLine + "http://www.sitemaps.org/schemas/sitemap/0.9" 
     + Environment.NewLine + "http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">"; 

    var urls = new System.Text.StringBuilder();   
    foreach (var site in siteMap.Items) 
    { 
     urls.Append(string.Format("<url><loc>http://www.{0}/</loc><lastmod>{1}</lastmod><changefreq>{2}</changefreq><priority>{3}</priority></url>", site.Url, site.LastMod, site.ChangeFreq, site.Priority)); 

    }      
    byte[] fileContent = System.Text.Encoding.UTF8.GetBytes(header + urls + "</urlset>"); 
    return new FileContentResult(fileContent, "text/xml"); 
} 

所以这是现在导致以下错误:

enter image description here

我在哪里做错了?谢谢

回答

0

问题在于“xsi:schemaLocation”位我认为 - 如果我的大脑记得正确,那么XML属性中的引号之间不能有多行。尝试改为:

var header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" 
    + Environment.NewLine + "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"" 
    + Environment.NewLine + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" 
    + Environment.NewLine + "xsi:schemaLocation=\"" 
    + "http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">" + Environment.NewLine;