问题
I have a simple XElement object
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")
);
Where want to dump out the contents into a string. Exactly like how Console.Writeline(xml);
does, but I want the contents in a string. I tried various methonds. xml.ToString();
doesn't return anything on its own.
回答1:
ToString
should most definately work. I use it all the time. What does it return for you in this case? An empty string? My guess is that something went wrong building your XElement
. To debug, rewrite the code to add each of the child XElement
s separately, so that you can step through your code and check on each of them. Then before you execute the .ToString
, in the Locals window, look at the [xml]
variable expanded to xml.
In short, your problem is happening before you ever get to the ToString()
method.
回答2:
ToString
works, but it returns content including XElement tag itself. If you need for Inner XML without root tag ("" in your example), you may use the following extension method:
public static class XElementExtension
{
public static string InnerXML(this XElement el) {
var reader = el.CreateReader();
reader.MoveToContent();
return reader.ReadInnerXml();
}
}
Then simple call it: xml.InnerXML();
来源:https://stackoverflow.com/questions/1942530/convert-xelement-to-string