【发布时间】:2011-03-23 18:21:13
【问题描述】:
我有一个需要作为加密 XML 字符串发送的序列化对象。我能够将序列化对象保存到格式良好的 XML 文件中,但这不是我想要的。我已经让 Rijndael 加密/解密为示例字符串工作。
Person person = new Person("Irish", "Chieftain");
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person));
// Write serialized XML to file
System.Guid guid = System.Guid.NewGuid();
StreamWriter streamWriter
= new StreamWriter(@"C:\application" + "_" + guid.ToString() + ".xml")
xmlSerializer.Serialize(streamWriter.BaseStream, person);
我希望能够在浏览器中显示 XML 字符串,在加密之前,测试是否将正确的加密字符串发送到另一台机器上的解密方法。
我已经讨论了一周,并查看了关于 SO 的其他答案,例如: How to return XML in ASP.NET?
谁能告诉我在浏览器中将生成的 XML 显示为字符串的正确语法?
[更新] 这是我试图呈现 XML 的内容:
MemoryStream memoryStream = new MemoryStream();
XmlTextWriter xmlWriter2 = new XmlTextWriter(memoryStream, Encoding.UTF8);
xmlWriter2.Formatting = Formatting.Indented;
xmlSerializer.Serialize(xmlWriter2, person);
memoryStream = (MemoryStream) xmlWriter2.BaseStream;
UTF8Encoding encoding2 = new UTF8Encoding();
stringData = encoding2.GetString(memoryStream.ToArray());
Response.ContentType = "text/xml";
Response.Write(stringData);
[更新 2]
如果我删除“text/xml”内容类型,当我查看源代码时会得到以下信息(正确吗?):
<?xml version="1.0" encoding="utf-8"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FirstName>Irish</FirstName>
<SecondName>Chieftain</SecondName>
</Person>
[更新 3]
工作版本:
#region Display original string
// Write serialized XML to a string - Display purposes.
MemoryStream memoryStream = new MemoryStream();
XmlTextWriter xmlWriter2
= new XmlTextWriter(memoryStream, Encoding.UTF8);
xmlWriter2.Formatting = Formatting.Indented;
xmlSerializer.Serialize(xmlWriter2, person);
memoryStream = (MemoryStream) xmlWriter2.BaseStream;
UTF8Encoding encoding2 = new UTF8Encoding();
stringData = encoding2.GetString(memoryStream.ToArray());
Response.Clear();
Response.ContentType = "text/xml";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetAllowResponseInBrowserHistory(true);
Response.Write(stringData);
Response.End();
#endregion
【问题讨论】:
-
我将您的 xml 粘贴到一个文本文件中,将其从 .txt 更改为 .xml 并在 IE 中打开它。没问题,它显示了树视图,一切都很好。我用 chrome 加载它,它显示的只是文本“Irish Chiegtain”
-
感谢 Muad'Dib,标记为答案 :-)
-
我在这里遗漏了一些东西:加密适用于哪里?加密的 XML 不符合 XML...
-
我正在加密上面的 XML 并在接收机器上解密它。我想确保发出正确的 XML。
标签: asp.net serialization xml-serialization rijndaelmanaged