2009-12-21 22 views
30

Mam proste Xelement obiektowiKonwersja Xelement ciąg

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") 
); 

Jeżeli chcesz zrzucić zawartość do łańcucha. Dokładnie tak, jak robi to Console.Writeline(xml);, ale chcę zawartość w łańcuchu. Próbowałem różnych metod. xml.ToString(); nie zwraca niczego samodzielnie.

Odpowiedz

42

ToString powinien zdecydowanie działać. Używam go cały czas. Co w tym przypadku zwraca dla ciebie? Pusty ciąg znaków? Domyślam się, że coś poszło nie tak, budując twoje XElement. Aby debugować, przepisz kod, aby dodać każdy z podrzędnych elementów XElements osobno, abyś mógł przejrzeć kod i sprawdzić każdą z nich. Następnie przed uruchomieniem .ToString, w oknie Locals, spójrz na zmienną [xml] rozwiniętą do xml.

Podsumowując, Twój problem występuje, zanim dojdziesz do metody ToString().

5

ToStringdziała, ale zwraca zawartość, w tym sam znacznik XElement. Jeśli potrzeba XML Wewnętrznej bez tagu root („” w przykładzie), można zastosować następującą metodę rozszerzenia:

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

Następnie proste wezwanie go: xml.InnerXML();