Подтвердить что ты не робот

Преобразование XElement в строку

У меня есть простой объект 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(); ничего не возвращает сам по себе.

4b9b3361

Ответ 1

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

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

Ответ 2

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