2009-12-21 40 views
30

Tengo un simple objeto XElementConvertir XElement a cadena

XElement xml = new XElement("XML", 
    new XElement ("TOKEN",Session["Token"]), 
    new XElement("ALL_INCLUSIVE", "0"), 
    new XElement("BEACH", "0"), 
    new XElement("DEST_DEP", ddlDest.SelectedValue.ToString()), 
    new XElement("FLEX", "0") 
); 

Dónde desea volcar el contenido en una cadena. Exactamente como lo hace Console.Writeline(xml);, pero quiero los contenidos en una cadena. Probé varios methonds. xml.ToString(); no devuelve nada por sí mismo.

Respuesta

42

ToString definitivamente debería funcionar. Lo uso todo el tiempo. ¿Qué te devuelve en este caso? Una cadena vacía? Supongo que algo salió mal al construir tu XElement. Para depurar, vuelva a escribir el código para agregar cada uno de los XElements secundarios por separado, de modo que pueda recorrer su código y verificar cada uno de ellos. Luego, antes de ejecutar .ToString, en la ventana Locales, observe la variable [xml] expandida a xml.

En resumen, su problema está sucediendo antes de llegar al método ToString().

5

ToStringfunciona, pero devuelve contenido que incluye la propia etiqueta XElement. Si necesita para XML interior sin etiqueta raíz ("" en su ejemplo), puede utilizar el siguiente método de extensión:

public static class XElementExtension 
{ 
    public static string InnerXML(this XElement el) { 
     var reader = el.CreateReader(); 
     reader.MoveToContent(); 
     return reader.ReadInnerXml(); 
    } 
} 

Entonces simple llamada que: xml.InnerXML();