У меня есть веб-сервис, который возвращает что-то типа MyData
.
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
и установить его собственные свойства, и веб-сервис будет правильно сериализовать обаклассы и все были довольны!
Однако теперь мне нужно передать XML, возвращенный функцией DataSet.GetXml()
.
Естественно, то, что я сделал, было
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 };
Тем не менее это бросает то же самое исключение.Что может быть не так?
Как правильно передать XML через веб-сервис?