у меня есть следующий класс контракта данных в WCF:
[DataContract]
public class PropertyDetails
{
# region >>---> private members
string city;
string propertyType;
double price;
string propertyClass;
# endregion
#region >>---> public properties
[DataMember]
public string City
{
get { return city; }
set { city = value; }
}
[DataMember]
public string PropertyType
{
get { return propertyType; }
set { propertyType = value; }
}
[DataMember]
public double Price
{
get { return price; }
set { price = value; }
}
[DataMember]
public string PropertyClass
{
get { return propertyClass; }
set { propertyClass = value; }
}
#endregion
}
}
я создаю узлыв файле XML, используя следующий код:
public void insertPropertyRecord(string city, string propertyType, double price, string propertyClass)
{
XmlTextReader propertyRecordReader = new XmlTextReader(WebConfigurationManager.AppSettings["XMLPropertyRecords"]);
XmlDocument xmlDocPropertyRecords = new XmlDocument();
xmlDocPropertyRecords.Load(propertyRecordReader);
propertyRecordReader.Close();
XmlElement xmlPropertyRecordRootNode = xmlDocPropertyRecords.DocumentElement;
if (!xmlPropertyRecordRootNode.HasChildNodes)
{
XmlElement xmlPropertyRecordNode = xmlDocPropertyRecords.CreateElement("propertyrecord");
XmlElement xmlPropertyRecordChildNode = null;
xmlPropertyRecordChildNode = xmlDocPropertyRecords.CreateElement("city");
xmlPropertyRecordChildNode.InnerText = city;
xmlPropertyRecordNode.AppendChild(xmlPropertyRecordChildNode);
xmlPropertyRecordChildNode = xmlDocPropertyRecords.CreateElement("propertytype");
xmlPropertyRecordChildNode.InnerText = propertyType;
xmlPropertyRecordNode.AppendChild(xmlPropertyRecordChildNode);
xmlPropertyRecordChildNode = xmlDocPropertyRecords.CreateElement("price");
xmlPropertyRecordChildNode.InnerText = Convert.ToString(price);
xmlPropertyRecordNode.AppendChild(xmlPropertyRecordChildNode);
xmlPropertyRecordChildNode = xmlDocPropertyRecords.CreateElement("propertyclass");
xmlPropertyRecordChildNode.InnerText = propertyClass;
xmlPropertyRecordNode.AppendChild(xmlPropertyRecordChildNode);
xmlPropertyRecordRootNode.AppendChild(xmlPropertyRecordNode);
}
else
{
XmlElement xmlPropertyRecordLastNode = (XmlElement)xmlPropertyRecordRootNode.LastChild;
XmlElement xmlPropertyRecordChildNode = null;
XmlElement xmlPropertyRecordNode = xmlDocPropertyRecords.CreateElement("propertyrecord");
xmlPropertyRecordChildNode = xmlDocPropertyRecords.CreateElement("city");
xmlPropertyRecordChildNode.InnerText = city;
xmlPropertyRecordChildNode.AppendChild(xmlPropertyRecordChildNode);
xmlPropertyRecordChildNode = xmlDocPropertyRecords.CreateElement("propertytype");
xmlPropertyRecordChildNode.InnerText = propertyType;
xmlPropertyRecordChildNode.AppendChild(xmlPropertyRecordChildNode);
xmlPropertyRecordChildNode = xmlDocPropertyRecords.CreateElement("price");
xmlPropertyRecordChildNode.InnerText = Convert.ToString(price);
xmlPropertyRecordChildNode.AppendChild(xmlPropertyRecordChildNode);
xmlPropertyRecordChildNode = xmlDocPropertyRecords.CreateElement("propertyclass");
xmlPropertyRecordChildNode.InnerText = propertyClass;
xmlPropertyRecordChildNode.AppendChild(xmlPropertyRecordChildNode);
xmlPropertyRecordLastNode.AppendChild(xmlPropertyRecordNode);
}
xmlDocPropertyRecords.Save(WebConfigurationManager.AppSettings["XmlPropertyRecords"]);
}
Я пытаюсь получить узлы в объекте, используя десериализацию, используя следующий код:
XmlSerializer ser = new XmlSerializer(typeof(List<PropertyDetails>));
TextReader sr = new StreamReader(WebConfigurationManager.AppSettings["XMLPropertyRecords"]);
List<PropertyDetails> obj = new List<PropertyDetails>();
obj = (List<PropertyDetails>)ser.Deserialize(sr);
, но я получаю ошибку в строке для десериализации как исключение недопустимой операции, созданное xml fie ниже:
<?xml version="1.0" encoding="utf-8"?>
<propertydetails>
<propertyrecord>
<City>delhi</City>
<PropertyType>residential</PropertyType>
<Price>4500000</Price>
<PropertyClass>flat</PropertyClass>
</propertyrecord>
</propertydetails>
, пожалуйста, помогите!