【问题标题】:Converting XML to UTF-8 using C#使用 C# 将 XML 转换为 UTF-8
【发布时间】:2019-10-29 13:16:58
【问题描述】:

我在下面编写了将 XML 文件转换为 UTF-8 格式文件的代码,它可以正常工作,但问题是标题与正文连接,而不是在单独的行中写入。我需要 utf8 在单独的行中,但 file.writealltext 不会接受超过 3 个参数/参数。任何帮助表示赞赏。

        string path = @"samplefile.xml";
        string path_new = @"samplefile_new.xml";

        Encoding utf8 = new UTF8Encoding(false);
        Encoding ansi = Encoding.GetEncoding(1252);

        string xml = File.ReadAllText(path, ansi);

        XDocument xmlDoc = XDocument.Parse(xml);

        File.WriteAllText(
            path_new,
            @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""true"">" + xmlDoc.ToString(),

           utf8
        );

【问题讨论】:

  • ...true""&gt;" + Environment.NewLine + xmlDoc.ToString(),
  • 它正在工作 :) 非常感谢,我在 tostring() 之后尝试过同样的事情。现在我知道我们需要在 xml 之后添加。
  • Silva,它不是重复的,您共享的一个纯 xml 一个,我正在寻找的一个是使用 c# 代码将 xml 转换为 UTF-8。上下文不同。

标签: c# xml c#-4.0


【解决方案1】:

除了 LINQ to XML 之外,无需使用任何 API。处理XML文件编码、prolog、BOM、缩进等一切手段。

void Main()
{
    string outputXMLfile = @"e:\temp\XMLfile_UTF-8.xml";

    XDocument xml = XDocument.Parse(@"<?xml version='1.0' encoding='utf-16'?>
                    <root>
                        <row>some text</row>
                    </root>");

    XDocument doc = new XDocument(
        new XDeclaration("1.0", "utf-8", null),
        new XElement(xml.Root)
    );


    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    settings.IndentChars = "\t";
    // to remove BOM
    settings.Encoding = new UTF8Encoding(false);

    using (XmlWriter writer = XmlWriter.Create(outputXMLfile, settings))
    {
        doc.Save(writer);
    }
}

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 2010-10-19
    • 2011-04-18
    • 2023-03-19
    • 2013-04-11
    • 2019-05-15
    • 2014-02-02
    • 2010-11-01
    • 1970-01-01
    相关资源
    最近更新 更多