【问题标题】:How to use XmlWriter to write non-well formed xml如何使用 XmlWriter 编写格式不正确的 xml
【发布时间】:2014-08-21 08:15:46
【问题描述】:

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

我需要将信息写入 xml 文档。 xml 的 simpleContent 可能包含 &'s。我希望这些写入文件只是&,而不是&

我该怎么做?我猜它包括一个 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
        }

    }

【问题讨论】:

  • 把整个东西写成一个字符串,然后Replace("&", "&")就可以了?
  • 为什么不是您的选择,您为什么要这样做并保留 XML 作为您选择的格式?你将无法解析它!
  • @SpaceBison - 我猜?因为我们并不总是能够编写代码来与符合标准的系统进行交互。
  • @antiduh 我承认你的陈述是真实的,但是我发现想要拥有一个不能被另一个系统使用的 XML 并且没有某种“修复”它是一件很困难的事情......
  • @SpaceBison 我们正在使用的风头视频播放器需要一个 xml 文档来显示字幕。所有编码“&”的方式都以纯文本形式出现(例如“&”)

标签: c# xml streamwriter xmlwriter


【解决方案1】:

请仅在绝对必要时才这样做;这不是符合标准的 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多