2016-05-14 3 views
0

ich nur eine XML-Ausgabe wie diese wollen:xsi Art und XSD-Tag

<ranzcp_user xmlns:ns1="urn:logon"> 
<user_id xsi:type="xsd:string">12345678</user_id> 
<user_name xsi:type="xsd:string">JTestFloor</user_name> 
<title xsi:type="xsd:string">Dr</title> 
<first_name xsi:type="xsd:string">TestJoni</first_name> 
<last_name xsi:type="xsd:string">TestFloor</last_name> 
<email xsi:type="xsd:string">[email protected] </email> 
<organisation_identifier xsi:type="xsd:string">RANZCPAU</organisation_identifier> 

ich bereits einen WCF-Dienst für diese habe, zur Zeit ist dies das Basismodell im mit jenen xml zu erstellen:

public class user 
{ 
    public string user_id { get; set; } 
    public string user_name { get; set; } 
    public string title { get; set; } 
    public string first_name { get; set; } 
    public string last_name { get; set; } 
    public string email { get; set; } 
    public string organisation_identifier { get; set; } 
} 

und ein einfacher Aufruf an den Dienst:

public class Service1 : IService1 
{ 
    public ranzcp_user UserData() 
    { 
     ranzcp_user data = new ranzcp_user(); 
     data.user_id = "12345678"; 
     data.user_name = "JTestFloor"; 
     data.title = "Dr"; 
     data.first_name = "TestJoni"; 
     data.last_name = "TestFloor"; 
     data.email = "[email protected]"; 
     data.organisation_identifier = "RANZCPAU"; 

     return data; 
    } 
} 

die Schnittstelle:

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    ranzcp_user UserData(); 

    // TODO: Add your service operations here 
} 

Was mir dann, wie dies für jetzt ein XML-Ergebnis liefert: enter image description here

+0

Es hilft, wenn Sie die Unterschiede explizit erklären können. Sie können dann auch danach suchen. Siehe zum Beispiel [So fügen Sie einem XML-Element das Attribut xsi: type hinzu] (http://stackoverflow.com/questions/24381588/how-to-add-xsitype-attribute-to-an-xml-element). – CodeCaster

+0

Hallo @CodeCaster danke, ehrlich gesagt, ich weiß nicht, was meinst du damit, aber ich möchte nur diese xsi hinzufügen: type = "xsd: string", genau wie zu sagen, dass die Entität von String-Datentyp war. danke –

+0

@CharlesMager yep mehr von so, aber was ich brauche, ist es in jedem Element unter zu setzen –

Antwort

3

Der einfachste Weg, dies zu tun, ist die Art Ihrer Eigenschaften auf etwas weniger spezifisch zu ändern - dann den Serializer das fügen Geben Sie Attribute ein, um die Typen zu identifizieren.

public class ranzcp_user 
{ 
    public object user_id { get; set; } 
    public object user_name { get; set; } 
    public object title { get; set; } 
    public object first_name { get; set; } 
    public object last_name { get; set; } 
    public object email { get; set; } 
    public object organisation_identifier { get; set; } 
} 

Siehe this fiddle für eine funktionierende Demo.