使用ASCII编码保存xml文件

时间:2014-03-15 11:20:05

标签: c# xml encoding linq-to-xml ascii

我有一个程序,它使用OpenCV来读取C ++程序中的xml文件。我想使用C#程序更改我的xml文件。当我使用SaveXDocument函数时,我收到以下错误:"流中的字符无效"

当我检查流时,我包含以下字符串:

<?xml version="1.0" encoding="utf-8"?>

我认为起始字符是由utf-8引起的,因此我使用this methodASCII格式保存我的xml。我的xml文件的编码更改为ascii,但encoding="us-ascii"已写入xml文件。我的问题是OpenCv检查编码是否为ASCII,并且因为它写为us-ascii,它会抛出异常。是否有任何解决方案可以在XDocument保存的xml中为编码属性编写ASCII

1 个答案:

答案 0 :(得分:1)

您可以通过创建新的Encoding类并覆盖WebName来实现这一目标:

    public class NonUsAsciiEncoding : ASCIIEncoding
    {
        public override string WebName
        {
            get
            {
                return "ascii";
            }
        }
    }

    private void CreateXml()
    {       
        XmlTextWriter xmlwriter = new XmlTextWriter("c:\\test.xml", new NonUsAsciiEncoding());        

        XDocument xdoc = new XDocument(
          new XElement("Test")
        );

        xdoc.Save(xmlwriter);
        xmlwriter.Close();
    }