web-dev-qa-db-ja.com

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();は、それ自体では何も返しません。

33
user236337

ToStringは最も確実に機能するはずです。いつも使っています。この場合、何が返されますか?空の文字列?私の推測では、あなたのXElementの構築に何か問題があったと思います。デバッグするには、コードを書き換えて、それぞれの子XElementsを個別に追加します。これにより、コードをステップ実行して、それぞれを確認できます。次に、_.ToString_を実行する前に、[ローカル]ウィンドウで、xmlに展開された_[xml]_変数を確認します。

つまり、ToString()メソッドに到達する前に問題が発生しています。

50
Patrick Karcher

ToStringworksが、XElementタグ自体を含むコンテンツを返します。ルートタグなしのInner XMLが必要な場合(例では "")、次の拡張メソッドを使用できます。

_public static class XElementExtension
{
    public static string InnerXML(this XElement el) {
        var reader = el.CreateReader();
        reader.MoveToContent();
        return reader.ReadInnerXml();
    }
}
_

次に、単純に呼び出します:xml.InnerXML();

9
Mike Keskinov