2015-08-21 2 views
0
<response id=\"f57127c5-c7c5-4e31-bf60-a4b47ddb95c6\"> 
    <error-code>0</error-code> 
    <error-message></error-message> 
    <result xsi:type=\"entityWrapper\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> 
     <elements> 
      <element xsi:type=\"decisionImpl\"> 
       <cityId>0</cityId> 
       <createdDate>2015-08-21T14:58:46.570+07:00</createdDate>  
       <createdUser>5</createdUser 
       <effectiveDate>2015-07-05T17:03:44.947+07:00</effectiveDate> 
       <enterpriseId>5</enterpriseId> 
       <equipmentSystem>K</equipmentSystem> 
       <id xsi:type=\"xs:long\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">8</id><invoiceType>1;</invoiceType> 
       <modifiedDate>2015-08-21T14:58:47.045+07:00</modifiedDate> 
       <modifiedUser>5</modifiedUser><number>HC889</number> 
       <proponentName>Quang</proponentName> 
       <status>0</status> 
      </element> 
     </elements> 
    </result> 
</response> 

Мой Xml как тотDeserialize Xml C# с XmlSerializer

public class Decision 
    { 
     [XmlAttribute(Namespace = "http://www.w3.org/2001/XMLSchema-instance")] 
     public String type = Constants.Type.DECISION; 
     [XmlElement(ElementName = "id")] 
     public long id { get; set; } 
     [XmlElement(ElementName = "enterpriseId")] 
     public long enterpriseId { get; set; } 
     [XmlElement(ElementName = "number")] 
     public String number { get; set; } 
     [XmlElement(ElementName = "proponentName")] 
     public String proponentName { get; set; } 
     [XmlElement(ElementName = "equipmentSystem")] 
     public String equipmentSystem { get; set; } 
     [XmlElement(ElementName = "softwareApplication")] 
     public String softwareApplication { get; set; } 
     [XmlElement(ElementName = "processCreator")] 
     public String processCreator { get; set; } 
     [XmlElement(ElementName = "responsible")] 
     public String responsible { get; set; } 
     [XmlElement(ElementName = "effectiveDate")] 
     public DateTime effectiveDate { get; set; } 
     [XmlElement(ElementName = "cityId")] 
     public long cityId { get; set; } 
     [XmlElement(ElementName = "recipient")] 
     public String recipient { get; set; } 
     [XmlElement(ElementName = "invoiceType")] 
     public String invoiceType { get; set; } 
     [XmlElement(ElementName = "status")] 
     public int status { get; set; } 
     [XmlElement(ElementName = "createdDate")] 
     public DateTime createdDate { get; set; } 
     [XmlElement(ElementName = "modifiedDate")] 
     public DateTime modifiedDate { get; set; } 
     [XmlElement(ElementName = "createdUser")] 
     public String createdUser { get; set; } 
     [XmlElement(ElementName = "modifiedUser")] 
     public String modifiedUser { get; set; } 
    } 

    [Serializable] 
    [XmlRoot(ElementName = "response")] 
    public class MessageResponseWrapperList<T> 
    { 
     [XmlAttribute(AttributeName = "id")] 
     public String id { get; set; } 
     [XmlElement(ElementName = "error-code")] 
     public String errorCode { get; set; } 
     [XmlElement(ElementName = "error-message")] 
     public String errorMessage { get; set; } 
     [XmlElement(ElementName = "result")] 
     public DataWrapper<T> wrapper { get; set; } 

    } 

    [Serializable] 
    public class DataWrapper<T> 
    { 
     [XmlAttribute(Namespace = "http://www.w3.org/2001/XMLSchema-instance")] 
     public String type = "entityWrapper"; 
     [XmlArray(ElementName = "elements")] 
     [XmlArrayItem(ElementName = "element")] 
     public List<T> result { get; set; } 
    } 

Моя функция, я десериализации в MessageResponseWrapperList со списком

public static MessageResponseWrapperList<T> fromXmlWrapper<T>(String xml) 
     { 
      StringReader reader = new StringReader(xml); 
      XmlSerializer serializer = new XmlSerializer(typeof(MessageResponseWrapperList<T>)); 
      MessageResponseWrapperList<T> t = (MessageResponseWrapperList<T>)serializer.Deserialize(reader); 
      return t; 
     } 

Но я получаю ошибку

Необработанное исключение типа «System.InvalidOperationException» произошел с System.Xml.dll

Дополнительная информация: В документе XML есть ошибка (1, 165).

ответ

3

Это правда, что есть ошибка в документе XML

Изменить

<createdUser>5</createdUser 

в

<createdUser>5</createdUser> 

закрывающая скобка.

+0

, что это не так, потому что XML не ошибка, как вы сказали. Я снова проверил ошибку снова – Kull

1

Двойной кавычек не требуется обратная косая черта в XML-файле. Ниже ваш XML все ошибки удалены

<?xml version="1.0" encoding="utf-8" ?> 
 
<response id="f57127c5-c7c5-4e31-bf60-a4b47ddb95c6"> 
 
    <error-code>0</error-code> 
 
    <error-message></error-message> 
 
    <result xsi:type="entityWrapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
 
    <elements> 
 
     <element xsi:type="decisionImpl"> 
 
     <cityId>0</cityId> 
 
     <createdDate>2015-08-21T14:58:46.570+07:00</createdDate> 
 
     <createdUser>5</createdUser> 
 
     <effectiveDate>2015-07-05T17:03:44.947+07:00</effectiveDate> 
 
     <enterpriseId>5</enterpriseId> 
 
     <equipmentSystem>K</equipmentSystem> 
 
     <id xsi:type="xs:long" xmlns:xs="http://www.w3.org/2001/XMLSchema">8</id> 
 
     <invoiceType>1;</invoiceType> 
 
     <modifiedDate>2015-08-21T14:58:47.045+07:00</modifiedDate> 
 
     <modifiedUser>5</modifiedUser> 
 
     <number>HC889</number> 
 
     <proponentName>Quang</proponentName> 
 
     <status>0</status> 
 
     </element> 
 
    </elements> 
 
    </result> 
 
</response> 
 
​

+0

Я не знаю, что ты имеешь в виду? – Kull

+0

, когда у вас есть двойная кавычка внутри укуса, вам нужно использовать обратную косую черту, например «Есть двойная кавычка в конце строки». Обратите внимание на две двойные кавычки в конце вместе. Вам не нужно это делать в XML-документ, поэтому атрибут выглядит как эта версия = "1.0", а не version = \ "1.0 \". – jdweng

+0

oh нет! это символ пробега пространства в String, а не "двойная кавычка" – Kull

Смежные вопросы