C# 解码及;来自&;amp;从XML到ToString()
如何获取下面的代码以返回所需的输出。这只是一个简单的csharp,没有ASP.NETC# 解码及;来自&;amp;从XML到ToString(),c#,xml,C#,Xml,如何获取下面的代码以返回所需的输出。这只是一个简单的csharp,没有ASP.NET //Desired output: <amp>Before & After</amp> //instead of //Current output: <amp>Before & After</amp> static void Main(string[] args) { string amp = "Bef
//Desired output: <amp>Before & After</amp>
//instead of
//Current output: <amp>Before & After</amp>
static void Main(string[] args)
{
string amp = "Before & After";
XmlDocument doc = new XmlDocument();
StringBuilder sb = new StringBuilder();
StringWriter stringWriter = new StringWriter(sb);
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
xmlWriter.WriteStartElement("amp");
xmlWriter.WriteString(amp);
xmlWriter.WriteEndElement();
global::System.Windows.Forms.MessageBox.Show(sb.ToString());
}
您可以将文本放入CDATA区域-请参阅。所需的输出不是有效的XML。当前输出与&;之前的
中的CDATA部分相同;After
和
只是两种不同的方式来转义符号and,这样您就可以拥有有效的XML。在任何一种情况下,如果您使用任何XML解析器读取
标记的内容,如果您希望自己创建无效的XML,它将返回之前和之后的
string amp = "Before & After";
// don't really do this, it's very wrong
StringBuilder sb = new StringBuilder();
sb.Append("<amp>");
sb.Append(amp);
sb.Append("</amp>");
Console.WriteLine(sb);
下面是我如何解决这个特殊问题的
string amp = "Before & After";
XmlDocument doc = new XmlDocument();
StringBuilder sb = new StringBuilder();
StringWriter stringWriter = new StringWriter(sb);
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
xmlWriter.WriteStartElement("amp");
xmlWriter.WriteString(amp);
xmlWriter.WriteEndElement();
StringReader valueStringReader = new StringReader(sb.ToString());
XmlTextReader valueXmlReader = new XmlTextReader(valueStringReader);
valueXmlReader.MoveToContent();
global::System.Windows.Forms.MessageBox.Show(valueXmlReader.ReadString());
string amp = "Before & After";
XmlDocument doc = new XmlDocument();
StringBuilder sb = new StringBuilder();
StringWriter stringWriter = new StringWriter(sb);
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
xmlWriter.WriteStartElement("amp");
xmlWriter.WriteString(amp);
xmlWriter.WriteEndElement();
StringReader valueStringReader = new StringReader(sb.ToString());
XmlTextReader valueXmlReader = new XmlTextReader(valueStringReader);
valueXmlReader.MoveToContent();
global::System.Windows.Forms.MessageBox.Show(valueXmlReader.ReadString());
我认为所需的输出不是有效的XML,因此我怀疑XmlTextWriter是否会为您这样做。HtmlTextWriter可能……没错,所需的输出不是XML。我希望将其转换回字符串缓冲区中的可读字符。请勿使用new XmlTextWriter()
。自.NET 2.0以来,它一直被弃用。改用XmlWriter.Create()
。以上只是一个更大问题的再现。我不想创建无效的XML,我只想将XML写入可读的输出中。
string amp = "Before & After";
XmlDocument doc = new XmlDocument();
StringBuilder sb = new StringBuilder();
StringWriter stringWriter = new StringWriter(sb);
XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
xmlWriter.WriteStartElement("amp");
xmlWriter.WriteString(amp);
xmlWriter.WriteEndElement();
StringReader valueStringReader = new StringReader(sb.ToString());
XmlTextReader valueXmlReader = new XmlTextReader(valueStringReader);
valueXmlReader.MoveToContent();
global::System.Windows.Forms.MessageBox.Show(valueXmlReader.ReadString());