Конвертировать XElement в строку - PullRequest
31 голосов
/ 21 декабря 2009

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

Ответы [ 2 ]

50 голосов
/ 21 декабря 2009

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

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

7 голосов
/ 18 декабря 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...