0
datacontract serializer를 사용하여 다음 XML을 클래스로 deserialize하려고합니다. 를 DataContract 클래스DataContract Serializer 목록을 역 직렬화하지 않는다
"<ns2:MemberCarePlanModel xmlns:ns2=\"http://v3.ua.test.com\">
<ns2:memberGoal><ns2:goalDescription>Has received diabetes self-management overview</ns2:goalDescription>
<ns2:memberId>111111111</ns2:memberId>
<ns2:goalId>be406994-47a6-4802-8dd6-9616bfbaaead</ns2:goalId>
</ns2:memberGoal>
</ns2:MemberCarePlanModel>"
내 코드이 코드 나던 목록 또는 구성원의 목표를 드 직렬화 왜 여기에 문제를 파악하지 못할
namespace Medventive.Registry.Service.ServiceImplementation.VITALServices
{
[DataContract(Namespace = @"http://v3.ua.test.com")]
[KnownType(typeof(MemberCareProblemModel))]
[KnownType(typeof(MemberGoalActivityModel))]
public class MemberGoalModel
{
/*
* <xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="careProblem" nillable="true" type="tns:MemberCareProblemModel"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="goalActivity" nillable="true" type="tns:MemberGoalActivityModel"/>
<xs:element minOccurs="0" name="goalDescription" type="xs:string"/>
<xs:element minOccurs="0" name="memberId" type="xs:string"/>
<xs:element minOccurs="0" name="goalId" type="xs:string"/>
</xs:sequence>
*/
//[DataMember(EmitDefaultValue = false, Name = "careProblem", Order = 1)]
//public List<MemberCareProblemModel> careProblem { get; set; }
//[DataMember(EmitDefaultValue = false, Name = "goalActivity", Order = 2)]
//public List<MemberGoalActivityModel> goalActivity { get; set; }
[DataMember(EmitDefaultValue = false, Name = "goalDescription", Order = 1)]
public string goalDescription { get; set; }
[DataMember(EmitDefaultValue = false, Name = "memberId", Order = 2)]
public string memberId { get; set; }
[DataMember(EmitDefaultValue = false, Name = "goalId", Order = 3)]
public string goalId { get; set; }
}
}
namespace Medventive.Registry.Service.ServiceImplementation.VITALServices
{
[DataContract(Namespace = @"http://v3.ua.test.com", Name="MemberCarePlanModel")]
[KnownType(typeof(MemberGoalModel))]
public class MemberCarePlanModel
{
[DataMember(EmitDefaultValue = false, Name = "memberGoal", Order = 1)]
public List<MemberGoalModel> memberGoal { get; set; }
}
}
입니다. if는 carePlan 클래스 내에 memberGoal의 단일 클래스가 있지만 목록에 대해 실패하면 잘 작동합니다.
다음은 내 비 직렬화 코드입니다. xml을 메모리 스트림으로 변환하고 디시리얼라이저로 전달합니다.
protected static T Deserialize<T>(Stream stream)
{
DataContractSerializer ser = new DataContractSerializer(typeof(T));
XmlReaderSettings rs = new XmlReaderSettings
{
ConformanceLevel = ConformanceLevel.Fragment,
};
XmlReader r = XmlReader.Create(stream, rs);
while (!r.EOF)
{
T obj = (T)ser.ReadObject(r);
return obj;
}
return default(T);
}
시도, 당신이 잘못있어 위치를 찾을 수 있습니다 그런 식으로 위의 문제를 해결 – VsMaX