将xml文档转换为编码为utf-8的字符串

本文关键字:utf-8 字符串 编码 文档 转换 xml | 更新日期: 2023-09-27 18:01:48

我想创建一个xml文档并将其保存在字符串对象中。

为了保存和编码的目的,我参考了SO上的这两个问题

  • XDocument.ToString()删除XML编码标签
  • 强制XDocument写入使用UTF-8编码的字符串
我的代码:
StringBuilder builder = new StringBuilder();
XDocument doc = new XDocument(new XElement("BANKID",
       new XElement("ReqID", "WEB"),
       new XElement("ReqHeader", "CASHDEP"),
       new XElement("CurrencyCode", ""),
       new XElement("CurrencyAbbrivation", "")));
using (TextWriter writer = new Utf8StringWriter(builder)) // Error Line
{
doc.Save(writer);
}
builder.ToString();
public class Utf8StringWriter : StringWriter
{
    public override Encoding Encoding { get { return Encoding.UTF8; } }        
}

它给我错误说"Utf8StringWriter不包含一个构造函数,接受1个参数"

如何修改接受参数为StringBuilder的类

将xml文档转换为编码为utf-8的字符串

您的自定义Utf8StringWriter类没有接受参数的构造函数,但是您正在尝试向它传递一个值。这就是为什么你会得到错误信息。

添加一个接受StringBuilder的公共构造函数,然后将其传递给基类:

public class Utf8StringWriter : StringWriter
{
    public Utf8StringWriter(StringBuilder stringBuilder)
        :base(stringBuilder)
    {
    }
    public override Encoding Encoding { get { return Encoding.UTF8; } }
}