0

我正在使用 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.
4

1 回答 1

2

您应该在这里清理 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();
}
于 2013-06-10T09:01:09.427 回答