Конвертировать XElement в строку

29

У меня есть простой объект XElement

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

Где хотите выгрузить содержимое в строку. Точно так же, как Console.Writeline(xml);, но я хочу содержимое в строке. Я пробовал разные метаны. xml.ToString(); ничего не возвращает ничего.

Большое спасибо, Marty

Теги:
linq
linq-to-xml

2 ответа

38
Лучший ответ

ToString должен наиболее определенно работать. Я использую это все время. Что это для вас в этом случае? Пустая строка? Я предполагаю, что что-то пошло не так, чтобы построить свой XElement. Чтобы отладить, перепишите код, чтобы добавить каждый из дочерних XElements отдельно, чтобы вы могли выполнить свой код и проверить каждый из них. Затем перед выполнением .ToString в окне Locals посмотрите на переменную [xml], расширенную в xml.

Короче говоря, ваша проблема происходит до того, как вы дойдете до метода ToString().

5

ToString работает, но он возвращает содержимое, включая сам тег XElement. Если вам нужен Внутренний XML без корневого тега ("" в вашем примере), вы можете использовать следующий метод расширения:

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

Тогда просто назовите его: xml.InnerXML();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню