我有一个程序,它使用OpenCV来读取C ++程序中的xml文件。我想使用C#程序更改我的xml文件。当我使用Save
类XDocument
函数时,我收到以下错误:"流中的字符无效"
当我检查流时,我包含以下字符串:
<?xml version="1.0" encoding="utf-8"?>
我认为起始字符是由utf-8
引起的,因此我使用this method以ASCII
格式保存我的xml。我的xml文件的编码更改为ascii,但encoding="us-ascii"
已写入xml文件。我的问题是OpenCv检查编码是否为ASCII
,并且因为它写为us-ascii
,它会抛出异常。是否有任何解决方案可以在XDocument保存的xml中为编码属性编写ASCII
?
答案 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();
}