J'ai un simple objet 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")
);
Où voulez vider le contenu dans une chaîne. Exactement comme le fait Console.Writeline(xml);
, mais je veux le contenu dans une chaîne. J'ai essayé plusieurs méthonds. xml.ToString();
ne retourne rien par lui-même.
ToString
devrait très certainement fonctionner. Je l'utilise tout le temps. Que vous rapporte-t-il dans ce cas? Une chaîne vide? Je suppose que quelque chose s'est mal passé lors de la construction de votre XElement
. Pour déboguer, réécrivez le code pour ajouter chacun des enfants XElement
séparément, afin de pouvoir parcourir votre code et vérifier chacun d'eux. Ensuite, avant d'exécuter le .ToString
, Dans la fenêtre Paramètres locaux, examinez la variable [xml]
Développée en xml.
En bref, votre problème se produit avant même que vous n'obteniez la méthode ToString()
.
ToString
fonctionne, mais il renvoie le contenu, y compris la balise XElement elle-même. Si vous avez besoin de XML interne sans balise racine ("" dans votre exemple), vous pouvez utiliser la méthode d'extension suivante:
public static class XElementExtension
{
public static string InnerXML(this XElement el) {
var reader = el.CreateReader();
reader.MoveToContent();
return reader.ReadInnerXml();
}
}
Ensuite, appelez-le simplement: xml.InnerXML();