Ниже приведен метод, который я использую для анализа XML. Он дает предупреждение CA2202 по анализу кода, в котором говорится, что объект mStream может быть удален несколько раз, и я не должен вызывать его более одного раза. Как я могу решить это предупреждение?Как исправить предупреждение CA2202?
public static String PrintXML(String XML)
{
String result = "";
string[] xmlSeperators = new string[] { "<?" };
string[] splitResults = new string[2];
if (!String.IsNullOrEmpty(XML))
{
using (MemoryStream mStream = new MemoryStream())
{
using (XmlTextWriter writer = new XmlTextWriter(mStream, Encoding.Unicode))
{
XmlDocument document = new XmlDocument();
try
{
// Load the XmlDocument with the XML.
//Check if it is only XML
if (XML.StartsWith("<?"))
{
document.LoadXml(XML);
}
else
{
//Split the string appended before XML
splitResults = XML.Split(xmlSeperators, 2, StringSplitOptions.None);
if (splitResults.Length > 1)
{
string d = "<?" + splitResults[1];
document.LoadXml(d);
}
}
writer.Formatting = Formatting.Indented;
// Write the XML into a formatting XmlTextWriter
document.WriteContentTo(writer);
//xx.WriteTo(writer);
writer.Flush();
mStream.Flush();
// Have to rewind the MemoryStream in order to read its contents.
mStream.Position = 0;
// Read MemoryStream contents into a StreamReader.
StreamReader sReader = new StreamReader(mStream);
// Extract the text from the StreamReader.
String FormattedXML = sReader.ReadToEnd();
if (splitResults[0] != null)
{
result = splitResults[0] + "\n" + FormattedXML;
}
else
{
result = FormattedXML;
}
}
catch (XmlException xe)
{
Log.Error(xe);
throw;
}
}
}
}
return result;
}
К сожалению XmlTextWriter не получить такие же перегрузки, как StreamWriter в .NET 4.5 (http://msdn.microsoft.com/en-us /library/gg712853(v=vs.110).aspx), так что вам нужно будет сделать то, что сказал Хабиб.Обычно я делаю такие вещи, как «новый XmlTextWriter (новый MemoryStream(), ...», чтобы было ясно, что XmlTextWriter владеет потоком, но на самом деле не подходит в вашем примере, потому что вы используете поток после создания XmlTextWriter. –