我有一个Web服务,它返回类型为MyData
的东西。从Web服务中传递Xml
public class MyData
{
public string Name;
[XmlElement("item")]
public Object[] DataItems;
}
我已经使用Object[]
为DataItems
因为数组的类型可以是几种类型的。我有两个不同的类,我可以使用这种方法成功发送。见下文。
clientResults
是填充的DataSet。
MyData returnResult = new MyData();
MyFirstClass[] resultData = new MyFirstClass[clientResults.Tables[0].Rows.Count];
resultData.MyFirstClassProperty1 = "Blah Blah";
resultData.MyFirstClassProperty2 = "Blah Blah";
returnResult.DataItems = resultData.
我可以很容易地改变MyFirstClass
到MySecondClass
并设置自己的属性和Web服务将正常序列两个类,每一个是幸福的!
但是现在需要传递由DataSet.GetXml()
函数返回的XML。
当然,我所做的就是
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(clientResults.GetXml());
resultData.DataItems = new XmlDocument[] { xdoc };
但这抛出异常
System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type System.Xml.XmlDocument may not be used in this context.
所以我就想,好吧,您有XmlNode的尝试。
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(clientResults.GetXml());
XmlNode xElement = xdoc.SelectSingleNode("/");
result.DataItems = new XmlNode[] { xElement };
还是抛出了SAME异常。什么可能是错的?
如何正确地通过Web服务传递XML?
你检查了什么会抛出异常? xdoc.LoadXml or clientResults.GetXml() – 2011-06-09 08:58:38
没有一个。它引发异常的XML序列化。如果重要,我可以粘贴堆栈跟踪。 – 2011-06-09 09:00:42
也许以下两个像可以帮助:http://stackoverflow.com/questions/935080/serializing-generic-xml-data-across-wcf-web-service-requests http://social.msdn.microsoft.com /论坛/ en-US/asmxandxml /线程/ 6ff9c882-f353-4ad5-816a-7fa9f424bc6c/ – 2011-06-09 09:26:58