Extensiones XML en .NET C#

Adjunto un conjunto de utilidades en .NET C# sobre objetos y strings en su representación xml, vienen en formato de extensión.

Obtener un objeto a partir de su representación xml que viene escrita en un string.

/// <summary>
/// Obtiene el objeto a partir de su reperesentación xml
/// </summary>
/// <param name="xml"></param>
/// <param name="objectType"></param>
/// <returns></returns>
public static object ToObjectFromXML(this string xml, Type objectType)
{
object obj = null;
if (!string.IsNullOrEmpty(xml))
{
StringReader strReader = null;
XmlSerializer serializer = null;
XmlTextReader xmlReader = null;

try
{
strReader = new StringReader(xml);
serializer = new XmlSerializer(objectType);
xmlReader = new XmlTextReader(strReader);
obj = serializer.Deserialize(xmlReader);
}
catch (Exception)
{
//Handle Exception Code

}
finally
{
if (xmlReader != null)
{
xmlReader.Close();
}
if (strReader != null)
{
strReader.Close();
}
}
}
return obj;
}

/// <summary>
/// Obtiene el objeto a partir de su reperesentación xml
/// </summary>
/// <param name="xml"></param>
/// <returns></returns>
public static object ToObjectFromXML<T>(this string xml)
{
object obj = null;
if (!string.IsNullOrEmpty(xml))
{
StringReader strReader = null;
XmlSerializer serializer = null;
XmlTextReader xmlReader = null;

try
{
strReader = new StringReader(xml);
serializer = new XmlSerializer(typeof(T));
xmlReader = new XmlTextReader(strReader);
obj = serializer.Deserialize(xmlReader);
}
catch (Exception exp)
{
//Handle Exception Code

}
finally
{
if (xmlReader != null)
{
xmlReader.Close();
}
if (strReader != null)
{
strReader.Close();
}
}
}
return obj;
}

 

Obtener un string desde la representación xml del objeto

/// <summary>
/// Obtiene un string con la representación xml del objeto
/// <summary>
/// Obtiene un string con la representación xml del objeto
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static string ToXMLString(this object o)
{
if (o != null)
{
StringWriter sw = new StringWriter();
XmlTextWriter tw = null;
try
{
XmlSerializer serializer = new XmlSerializer(o.GetType());
tw = new XmlTextWriter(sw);
serializer.Serialize(tw, o);
}
catch (Exception ex)
{
//Handle Exception Code
}
finally
{
if (sw != null)
{
sw.Close();
}

if (tw != null)
{
tw.Close();
}
}
return sw.ToString();
}
return null;
}

Identar el xml, mejorar la legibilidad del xml que viene en un string
 

 
/// <summary>
/// Identa el xml
/// </summary>
/// <param name="xml"></param>
/// <returns></returns>
public static string PrintXML(this string xml)
{
string result = "";

MemoryStream mStream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mStream, Encoding.Unicode);
XmlDocument document = new XmlDocument();

try
{
// Load the XmlDocument with the XML.
document.LoadXml(xml);

writer.Formatting = Formatting.Indented;

// Write the XML into a formatting XmlTextWriter
document.WriteContentTo(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();

result = formattedXml;
}
catch (XmlException)
{
// Handle the exception
}
finally
{
if (mStream != null)
{
mStream.Close();
}
if (writer != null)
{
writer.Close();
}
}

return result;
}

 

Espero que las disfrutéis y no olvidéis comentar

Etiquetas:, ,

Deja un comentario

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar