如何使用 & 编码 XML 字符串

How to encode a XML String with &

我有一个 XML 字符串,有时可以包含 &。这是代码 (C#):

            var templateDef = String.Format("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><template><path>{0}</path><title>{1}</title><description>{2}</description></template>", templateUrl, templateTitle, templateDescription);
            return File(System.Text.Encoding.UTF8.GetBytes(templateDef), "application/octet-stream", templateTitle + ".hdtl");

我读过 HttpUtility.HtmlEncode,但我的问题是我无法对字符串进行编码,因为它会在最后一行再次编码

            return File(System.Text.Encoding.UTF8.GetBytes(templateDef), "application/octet-stream", templateTitle + ".hdtl");

而且我无法更改最后一行。 String.Replace("&","&") 可以工作,但不是合适的解决方案。

谢谢

最好使用面向 XML 的内容构建 XML,例如 Xml.Linq

var r = new XElement("template", 
            new XElement("path", "i & am <fine> & dandy"),
            new XElement("title", "..."),
            new XElement("description", "...")).ToString();

对于正确转义

<template>
  <path>i &amp; am &lt;fine&gt; &amp; dandy</path>
  <title>...</title>
  <description>...</description>
</template>