代码之家  ›  专栏  ›  技术社区  ›  Brett Rigby

将linq-to-xml文件保存为ansi而不是c(ivy)中的utf-8

  •  4
  • Brett Rigby  · 技术社区  · 16 年前

    在C中,我需要创建用于ivy和nant的XML文件,但是很难在输出文件中获得正确的编码。

    如果我使用Xelement的.save(“c:\foo.xml”),我会得到正确的 文件,但Ivy和/或Nant会感到不安,因为文件实际上是使用UTF-8保存的,但我实际上需要将其保存为ANSI才能使用它。

    我现在有一个预兆,就是使用.toString()获取文本,然后使用streamwriter将其写入文件。

    理想情况下,我希望在.save()期间设置格式,但找不到有关此内容的任何信息。

    谢谢。

    1 回复  |  直到 16 年前
        1
  •  10
  •   Lachlan Roche    16 年前

    XDocument.Save 有多个重载。

    通过正确构造的xmlwriter进行写入,我们可以选择ASCII编码。

    var doc = XDocument.Parse( "<foo>&#160;bar&#7800;baz</foo>" );
    
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Encoding = new ASCIIEncoding();
    using (var writer = XmlWriter.Create( "xelement.xml", settings )) {
        doc.Save( writer );
    }
    
    推荐文章