用ASCII编码保存xml文件

本文关键字:xml 文件 保存 编码 ASCII | 更新日期: 2023-09-27 17:50:34

我有一个使用OpenCV在c++程序中读取xml文件的程序。我想用c#程序修改我的xml文件。当我使用XDocument类的Save函数时,我得到以下错误:"流中无效字符"

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

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

我认为开始字符是因为utf-8,所以我用这种方法将我的xml保存为ASCII格式。我的xml文件的编码改为ascii,但是在xml文件中编写了encoding="us-ascii"。我的问题是,OpenCv检查编码是否为ASCII,因为它是写us-ascii,它抛出异常。是否有任何解决方案来编写ASCII的编码属性在xml中保存的XDocument?

用ASCII编码保存xml文件

您可以通过创建一个新的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();
    }