XDocument生成Rss期间的异常

时间:2013-06-10 08:55:12

标签: c# asp.net rss linq-to-xml

我正在使用XDocument创建一个与代码相同的RSS:

            var rss = new XDocument(
            new XDeclaration("1.0", "utf-8", null),
            new XElement("rss", new XElement("channel",
                                        new XElement("title", blog.Title),
                                        new XElement("link", link),
                                        new XElement("description", blog.Description),
                                        new XElement("generator", "RSS Generated by x"),
                                        new XElement("language", "fa"),
                                        from item in items
                                        select new XElement("item",
                                                            new XElement("title", item.Title),
                                                            new XElement("link", item.Link),
                                                            new XElement("pubDate", item.PubDate),
                                                            new XElement("author", item.Author),
                                                            new XElement("guid", item.Guid),
                                                            new XElement("description", item.Description),
                                                            new XElement("comments", item.Comments)
                                            )
                                ),
                            new XAttribute("version", "2.0")));

某些内容在执行此代码期间发生异常。

'.', hexadecimal value 0x00, is an invalid character.
'', hexadecimal value 0x1D, is an invalid character.
'', hexadecimal value 0x0B, is an invalid character.

1 个答案:

答案 0 :(得分:1)

您应该清理xml数据 这里是http://en.wikipedia.org/wiki/Valid_characters_in_XML内可以使用的字符 有效字符将是

public string sanitizeText(string sanitize){
    StringBuilder result = new  StringBuilder();
    foreach(   char x in sanitize){
        if ((x == 0x9 || x == 0xA || x == 0xD) ||   
        ((x >= 0x20) && (x <= 0xD7FF)) ||   
        ((x >= 0xE000) && (x <= 0xFFFD)) ||   
        ((x >= 0x10000) && (x <= 0x10FFFF)))  result.Append(x);
    } 
    return result.ToString();
}