【发布时间】:2011-09-11 12:35:04
【问题描述】:
我有一个返回 MyData 类型的 Web 服务。
public class MyData
{
public string Name;
[XmlElement("item")]
public Object[] DataItems;
}
我将Object[] 用于DataItems,因为数组的类型可以有多种类型。我有两个不同的类,我可以使用这种方法成功发送它们。见下文。
clientResults 是填充的数据集。
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 };
仍然抛出相同的异常。有什么问题?
如何通过 Web 服务正确传递 XML?
【问题讨论】:
-
你检查过是什么引发了异常吗? xdoc.LoadXml 或 clientResults.GetXml()
-
没有。它是引发异常的 XML 序列化。如果重要,我可以粘贴堆栈跟踪。
标签: c# xml web-services xmldocument invalidoperationexception