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

我试图避免字符串!

我可以返回一个 XmlNode(从 XElement 创建),它得到了我需要的东西——客户端上的一段 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 回答