웹 서비스에 요청을 보내야합니다. 이 요청은 "세션"객체를 매개 변수로 요청합니다.C#, XMl 파일을 비 직렬화 할 수 없습니다.
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18060")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://www.xmlns.cfins.com/cfins/services/publishPolicyData/1.0")]
public partial class session {
private object[] itemsField;
private string idField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("data", typeof(sessionData))]
[System.Xml.Serialization.XmlElementAttribute("properties", typeof(sessionProperties))]
public object[] Items {
get {
return this.itemsField;
}
set {
this.itemsField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string id {
get {
return this.idField;
}
set {
this.idField = value;
}
}
}
여기 내 xml 파일입니다. 나는이 XML 파일을 역 직렬화 할 때
<session id="6055">
<properties dateModified="2014-01-08" engineVersion="2.0" cultureCode="en-US" cultureName="United States [english]">
<userName>admin</userName>
</properties>
<data id="d2311A049FDC64CD9AE9EF3DE5874CB2D">
.....
</data>
</session>
은, 난 단지 ID를 얻을 항목은 항상 곁에 null입니다. BTW, 세션 클래스는 웹 서비스에서, 나는 그것을 변경할 수 없습니다.
public static session GetSession()
{
var s = new session();
var data = new sessionData();
var sessionXml = @"C:\Projects\CFWinSvc - Copy\XmlDeSerialize\session.xml";
using (TextReader reader = new System.IO.StreamReader(sessionXml))
{
var serializer = new XmlSerializer(typeof(session));
s = (session)serializer.Deserialize(reader);
}
return s;
}
public static session GetSession()
{
var s = new session();
var data = new sessionData();
var sessionXml = @"C:\Projects\CFWinSvc - Copy\XmlDeSerialize\session.xml";
using (TextReader reader = new System.IO.StreamReader(sessionXml))
{
var serializer = new XmlSerializer(typeof(session));
s = (session)serializer.Deserialize(reader);
}
return s;
}
UPDATE :
여기에 XML 스키마입니다.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://www.cfins.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.xmlns.cfins.com/cfins/services/publishPolicyData/1.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="session">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="properties">
<xs:complexType>
<xs:sequence>
<xs:element name="userName" type="xs:string"/>
</xs:sequence>
<xs:attribute name="dateModified" use="optional"/>
<xs:attribute name="engineVersion" type="xs:string" use="optional"/>
<xs:attribute name="cultureCode" type="xs:string" use="optional"/>
<xs:attribute name="cultureName" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="data">
<xs:complexType>
<xs:all>
<xs:element name="AlwaysAddIDs" type="xs:boolean" minOccurs="0"/>
<xs:element name="ProRatingOn" type="xs:boolean" minOccurs="0"/>
<xs:element name="carrier" minOccurs="0">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="userinterface" minOccurs="0">
<xs:complexType>
<xs:attribute name="id" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="id" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" use="optional"/>
</xs:complexType>
</xs:element>
</xs:schema>
내 게시물이 업데이트되어 거기에 스키마가 추가되었습니다. 당신의 도움을 주셔서 감사합니다. – qinking126
그리고 codegen에 xsd.exe를 사용하고 있습니까? –
다른 개발자가 xml을 Visual Studio에로드합니다. 상단 메뉴에서 xml을 선택한 다음 스키마 생성을 선택하십시오. – qinking126