我要做的是从我的WCF服务返回XmlDocument
。
问题是我收到错误“根元素丢失。”
这是我的代码
public XmlElement GetDeviceListXML()// this got [XmlSerializerFormat]and [OperationContract]
{
List<Device> list = MyProject.BLL.Device.GetList();// here i getting list of devices from my database
//Device is object which got [serializable] attribute
XmlRootAttribute xra = new XmlRootAttribute("Device");
xra.ElementName = "Devices";
xra.Namespace = "http://MMEwidencja.pl";
xra.IsNullable = false;
XmlSerializer serializer = new XmlSerializer(typeof(List<Device>), xra);
var stream = new MemoryStream();
XmlDocument xDoc = new XmlDocument();;
try
{
serializer.Serialize(stream, list);
stream.Position = 0;// that what was I miss
xDoc.Load(stream);
}
catch (Exception ex)
{
throw ex;
}
return xDoc.DocumentElement;
}
我应该如何做这项工作?
编辑: 我有解决方案,问题是XmlDocument试图从最后一个字节加载流到最后一个字节。我错过了将该位置置于该流中的位置。
答案 0 :(得分:1)
没有根元素,因为XmlDocument.Load函数认为流的长度为0字节。
也许请阅读此链接:http://geekswithblogs.net/.NETonMyMind/archive/2007/11/15/116862.aspx
答案 1 :(得分:1)
将xml作为文本流返回然后将其加载到使用者的XmlDocument中会更加清晰。