내가 WCF에서 데이터 계약 클래스 다음 한 3.0 WCF 서비스를 in.net 다음 코드를 사용하여 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의 헛소리입니다 아래 예 :
<?xml version="1.0" encoding="utf-8"?>
<propertydetails>
<propertyrecord>
<City>delhi</City>
<PropertyType>residential</PropertyType>
<Price>4500000</Price>
<PropertyClass>flat</PropertyClass>
</propertyrecord>
</propertydetails>
도와주세요.
고맙습니다.하지만 그 이유를 설명 할 수 있다면 정말 고마워 할 것입니다. 좋은 모양이 아니 었어. XML이 우리가 원하는대로 설명 될 수 있고 태그가 작성되고 닫히는 이유는 무엇입니까? 왜 포트폴리오를 속성에 맞게 바꾸는 것이 효과가 있었습니까? –
List를 직렬화하려고합니다. 이 경우 XML은 로 시작해야합니다. –
Shailesh