【问题标题】:Issue writing XML using TextWriter使用 TextWriter 编写 XML 的问题
【发布时间】:2013-05-21 13:30:25
【问题描述】:

我曾尝试使用 Textwriter 编写 XML,但我发现我无法将字符 ' " & 写入该文件。

我写的类如下:

public void Write_File(rss r, string fileName)//-- rss here is a class I built in other place
{
    XmlSerializer serializer = new XmlSerializer(typeof(rss));
    TextWriter textWriter = new StreamWriter(path + fileName);//-- path is directory path to save xml file
    serializer.Serialize(textWriter, r);
    textWriter.Close();            
}

谁能帮我解决这个问题?

【问题讨论】:

  • 你的描述对定位错误帮助不大。
  • 使用HtmlEncode编码字符串
  • 您遇到错误了吗?

标签: c# .net xml asp.net-mvc


【解决方案1】:

你就是不能。 C# 转换这样的字符:

< to &lt; 
> to &gt;
& to &amp;

如果允许,您可以销毁您的 XML。如果你需要添加标签,你不能简单地使用序列化器。您需要使用代码构建文档,例如表单XMLDocument class

【讨论】:

    【解决方案2】:

    只需在您的项目中包含System.Web 程序集并利用HttpUtility 类对您的字符串进行编码,如下所示:

    public void Write_File(rss r, string fileName)//-- rss here is a class I built in other place
    {
        XmlSerializer serializer = new XmlSerializer(typeof(rss));
        TextWriter textWriter = new StreamWriter(path + fileName);
        serializer.Serialize(textWriter, HttpUtility.HtmlEncode(r));
        textWriter.Close();            
    }
    

    我只能假设您已经覆盖了 rssToString 方法以在此处返回 XML 字符串,因为您没有其他方法可以在此处获取字符串。

    【讨论】:

    • 麻烦这是 HttpUtility.HtmlEncode(r) 要求 r 是 System.String 类型。但是 r 这是 rss 类的一个实例。我试过但不允许。非常感谢。
    • @Phan,您是否重写了 RSS 类的 ToString 方法?如果是这样,请在调用 HtmlEncode 时尝试在对象上调用 ToString
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 1970-01-01
    • 2011-04-30
    相关资源
    最近更新 更多