C# 如何使用XmlWriter编写格式不正确的xml

C# 如何使用XmlWriter编写格式不正确的xml,c#,xml,streamwriter,xmlwriter,C#,Xml,Streamwriter,Xmlwriter,首先,我不喜欢这样做。这不是我的选择 我需要将信息写入xml文档。xml的simpleContent可能包含&。我希望将它们作为&写入文件,而不是& 我该怎么做?我猜它包括一个StreamWriter和类似的东西: private void SaveCaption_Click(object sender, EventArgs e) { if (saveCaptionDialog.ShowDialog() == DialogResult.OK) {

首先,我不喜欢这样做。这不是我的选择

我需要将信息写入xml文档。xml的simpleContent可能包含&。我希望将它们作为
&
写入文件,而不是
&

我该怎么做?我猜它包括一个StreamWriter和类似的东西:

 private void SaveCaption_Click(object sender, EventArgs e)
    {
        if (saveCaptionDialog.ShowDialog() == DialogResult.OK)
        {
            using (StreamWriter writer = new StreamWriter(saveCaptionDialog.FileName, null))
            {
                using (XmlWriter xmlWriter = XmlWriter.Create(writer))
                {
                    xmlWriter.Formatting = Formatting.Indented;
                    xmlWriter.Indentation = 4;
                    xmlWriter.WriteStartDocument();
                    xmlWriter.WriteStartElement("tt");
                    ...
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndDocument();
                }
            }
            //streamWriter do your thing
        }

    }

请只在绝对必要时才这样做;这不是符合标准的XML

只有您可以防止XML火灾

使用
WriteRaw()
方法:

        XmlWriter writer;

        writer = XmlWriter.Create( @"C:\users\account\desktop\test.xml" );

        writer.WriteStartDocument();
        writer.WriteStartElement( "TestElement" );
        writer.WriteRaw( "Hello & goodbye" );
        writer.WriteEndElement();
        writer.WriteEndDocument();

        writer.Flush();
        writer.Close();
这将生成输出:

<?xml version="1.0" encoding="utf-8"?><TestElement>Hello & goodbye</TestElement>
你好&再见

请仅在绝对必要的情况下执行此操作;这不是符合标准的XML

只有您可以防止XML火灾

使用
WriteRaw()
方法:

        XmlWriter writer;

        writer = XmlWriter.Create( @"C:\users\account\desktop\test.xml" );

        writer.WriteStartDocument();
        writer.WriteStartElement( "TestElement" );
        writer.WriteRaw( "Hello & goodbye" );
        writer.WriteEndElement();
        writer.WriteEndDocument();

        writer.Flush();
        writer.Close();
这将生成输出:

<?xml version="1.0" encoding="utf-8"?><TestElement>Hello & goodbye</TestElement>
你好&再见

将整个内容写入字符串,然后在其上替换(“&;”、“&”)
?为什么它不是您的选择,为什么您要这样做并保留XML作为您选择的格式?你将无法解析它@太空野牛-我猜?因为我们并不总是能够编写与符合标准的系统接口的代码。@antiduh我认识到你的陈述的真实性,但是我发现想要拥有其他系统无法使用的XML是一件很困难的事情,在没有某种“修复”的情况下…@SpaceBison我们正在使用的聚光灯视频播放器需要一个xml文档来显示字幕。所有编码“&”的方法都是它们的纯文本等价物(例如“&;”)。将整个内容写入字符串,然后在其上替换(“&;”,“&”)?为什么不是您的选择,为什么要这样做并保留XML作为您选择的格式?你将无法解析它@太空野牛-我猜?因为我们并不总是能够编写与符合标准的系统接口的代码。@antiduh我认识到你的陈述的真实性,但是我发现想要拥有其他系统无法使用的XML是一件很困难的事情,在没有某种“修复”的情况下…@SpaceBison我们正在使用的聚光灯视频播放器需要一个xml文档来显示字幕。所有编码“&”的方式都以其纯文本等效形式出现(例如“&;”)