4

Web サービス (C#/asp.net) から XElement を返すことは可能ですか?

XElement を返す単純な Web サービスを試してください。

[WebMethod]
public XElement DoItXElement()
{
  XElement xe = new XElement("hello",
     new XElement("message", "Hello World")
     );

  return xe;
}

これは問題なくコンパイルされますが、試して実行すると、

スキーマのトップ レベルではワイルドカードを使用できません。

この投稿は、これが .net のバグであることを示唆しています。

それで... Web サービスから XElement を返すことはできますか? もしそうなら、どのように?

ありがとう。

4

4 に答える 4

5

XElement のシリアライズ方法に問題があるようです。こちらを確認してください...

XElement を文字列として試してみることも、記事で示唆されているように、クラス ラッパーを使用して XElement を内部に配置することもできます。ポイントが普遍的な形式でデータを出力することである場合、文字列を返すことに固執します。

于 2008-12-08T15:35:54.807 に答える
3

文字列を避けようとしていた!

(XElement から作成された) XmlNode を返すことができます。これにより、必要なもの (クライアント上の XML のスラッグ) が取得されます。そのリンクに感謝します-XWrapperをさらに調査します...

于 2008-12-08T16:23:00.033 に答える
0

不思議なことに、これはサービスの「検出」部分を見ようとしている場合にのみ発生するようです-問題なくメソッドを実行できます...

于 2009-04-24T16:40:53.370 に答える
0

XmlElement 型を返し、この拡張メソッドを使用して XElement から XmlElement に変換します。

[System.Runtime.CompilerServices.Extension()]
public XmlElement ToXmlElement(XElement value)
{
    var xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(value.ToString());
    return xmlDoc.DocumentElement;
}

これはうまくいくようです。

于 2016-11-02T18:57:12.130 に答える