2012-03-28 1 views
0

내가 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> 

도와주세요.

답변

0

XML이 정상적이지 않습니다. 아래 언급 된대로 XML을 사용해보십시오.

<ArrayOfPropertydetails> 
    <Propertydetails> 
    <City>delhi</City> 
    <PropertyType>residential</PropertyType> 
    <Price>4500000</Price> 
    <PropertyClass>flat</PropertyClass> 
    </Propertydetails> 
</ArrayOfPropertydetails> 
+0

고맙습니다.하지만 그 이유를 설명 할 수 있다면 정말 고마워 할 것입니다. 좋은 모양이 아니 었어. XML이 우리가 원하는대로 설명 될 수 있고 태그가 작성되고 닫히는 이유는 무엇입니까? 왜 포트폴리오를 속성에 맞게 바꾸는 것이 효과가 있었습니까? –

+0

List 를 직렬화하려고합니다. 이 경우 XML은 로 시작해야합니다. – Shailesh

0

잘 구성 "XML 문서가 올바른 XML 구문

구문 규칙은 이전 장에서 설명했다 :. XML 요소는 종료 태그가 있어야합니다 • XML 문서 • 는 루트 요소 이 있어야합니다 • XML 태그는 대소 문자를 구분 • XML 요소가 있어야 있습니다 제대로 XML • 중첩 될 값이 토베 야니 알림,691를 인용해야 속성이번 주말에 나를 잊지 마라!

관련 문제