Преобразование 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();
ничего не возвращает сам по себе.
Ответы
Ответ 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();