在WCF服務上序列化xml輸入時,我面臨著獲得串列物件型別的問題。我沒有得到資料類的串列值,它給出的計數值是零。我是WCF服務的新手。你能幫助我嗎?
下面是一個例子。
下面是一個例子:
[DataContract]
public class Item
{
DataMember] [DataMember]。
public int Id { get; set; }
[資料成員]
public string Name { get; set; }
[DataMember]
public List<Data> data { get; set; }
}
[DataContract] 。
public class Data
{
[DataMember] 。
public int dataId { get; set; }
[DataMember]。
public int dataName { get; set; }
[DataMember]。
public int dataVolume { get; set; }
并在服務類中序列化xml資料
public Stream Conversion(Stream request)。
{
XmlSerializer serializer1 = new XmlSerializer(typeof(Item));
Item item = (Item)serializer1.Deserialize(request)。
uj5u.com熱心網友回復:
XmlSerializer允許一個串列是一個具有相同名稱的元素序列,例如:
XmlSerializer允許一個串列是一個具有相同名稱的元素序列。
[XmlRoot("Item"/span>, Namespace="")]
public class Item
{
public int Id { get; set; }
public string Name { get; set; }
[XmlElement("Data")]
public List<Data> Data { get; set; }
}
public class Data
{
[DataMember] 。
public int dataId { get; set; }
[DataMember]。
public string dataName { get; set; }
[DataMember]。
public int dataVolume { get; set; }
然后試一下:
public static class XmlSerializationHelper
{
public static string GetXml< T>(T obj, XmlSerializer serializer, bool omitStandardNamespaces)
{
using (var textWriter = new StringWriter()
{
XmlWriterSettings = new XmlWriterSettings()。
settings.Indent = true; /// For cosmetic purposes.
settings.IndentChars = " "; //為美觀起見,。
using (var xmlWriter = XmlWriter.Create(textWriter, settings)
{
if (omitStandardNamespaces)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces()。
ns.Add("", ""); //停用xmlns:xsi和xmlns:xsd行。
serializer.Serialize(xmlWriter, obj, ns)。
}
else
{
serializer.Serialize(xmlWriter, obj);
}
}
return textWriter.ToString()。
}
}
public static string GetXml< T>(this T obj, bool omitNamespace)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType())。
return GetXml(obj, serializer, omitNamespace)。
}
public static string GetXml<。 T>(this T obj)。
{
return GetXml(obj, false)。
}
這是測驗代碼 :
var item = new Item { Id= 1, Name = "The Car", Data = new[] { new Data { dataId = 1, dataName = "Vovol", dataVolume = 135 }, new Data { dataId = 2, dataName = "Cadillac",dataVolume = 136 }. }.ToList() };
var xml = item.GetXml();
Debug.WriteLine(xml);
下面的xml是為你的班級準備的:
<Item>
<Id>1</Id>
<Name>The Car</Name>
<資料>
<dataId>1</dataId>
<dataName>Vovol</dataName>
<dataVolume>135</dataVolume>
</Data>
<資料>
<dataId>2</dataId>
<dataName>Cadillac</dataName>
<dataVolume>136</dataVolume>
</Data>
</Item>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/316149.html
標籤:
