是否可以从Web服务返回XElement(在C#/ asp.net中)?
尝试一个返回XElement的简单Web服务:
[WebMethod]
public XElement DoItXElement()
{
XElement xe = new XElement("hello",
new XElement("message", "Hello World")
);
return xe;
}
这个编译很好,但是如果你尝试运行它就会得到
Cannot use wildcards at the top level of a schema.
我在.net中找到了this post implying that this is a bug。
那么......我可以从Web服务返回XElement吗?如果是这样,怎么样?
感谢。
答案 0 :(得分:5)
XElement如何序列化似乎存在问题,请检查here ...
您可以尝试将XElement作为字符串进行尝试,或者文章建议您只需使用类包装器并将XElement放入其中。如果要点是以通用格式输出数据,那么你将无法返回一个字符串。
答案 1 :(得分:3)
我试图避开字符串!
我可以返回一个XmlNode(从XElement创建),它可以获得我需要的东西 - 客户端上的一小段XML。感谢您的链接 - 我将进一步调查XWrapper ......
答案 2 :(得分:0)
奇怪的是,似乎只有在您尝试查看服务的“发现”部分时才会发生这种情况 - 您可以毫无问题地运行该方法......
答案 3 :(得分:0)
返回一个XmlElement类型,只需使用此扩展方法将XElement转换为XmlElement:
[System.Runtime.CompilerServices.Extension()]
public XmlElement ToXmlElement(XElement value)
{
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(value.ToString());
return xmlDoc.DocumentElement;
}
这似乎运作良好。