0

我有以下用于定义 XML 模式的代码。将线条保持在一起时遇到问题。以前工作得很好。

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");
} 

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

在此处输入图像描述

我在哪里做错了?谢谢

4

1 回答 1

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;
于 2013-04-08T07:14:30.097 回答