我想將xsd文件轉換爲.net類。 我尋覓了很多關於這個話題,發現XSD.EXE作爲實現這一目標的方式之一,但我仍然有兩個問題在運行時自定義xsd文件到C#類的反序列化
我不想手動生成從命令提示符類,但希望所有這些在運行時完成。爲此,我嘗試使用System.Diagnostics.Process在運行時運行xsd.exe,但無法成功執行,並且在進程啓動時出現閃爍的命令提示符窗口。
我甚至沒有成功獲得從命令提示符生成的類也。它給我錯誤「Schema D:\ Response.xsd無法驗證。」
所以基本上我想實現的東西,會用我的xsd字符串,並將其反序列化到我的班類型的一個運行時,像我們使用XmlSerializer類與XML字符串做。
我想提一提,我認爲我的XSD字符串是一般的XSD類型,但一種習俗的不是,其中一個答覆的一個例子是這樣的
<?xml version="1.0" encoding="iso-8859-1"?>
<serv:message xmlns:serv="http://www.webex.com/schemas/2002/06/service"
xmlns:com="http://www.webex.com/schemas/2002/06/common"
xmlns:use="http://www.webex.com/schemas/2002/06/service/user">
<serv:header>
<serv:response>
<serv:result>SUCCESS</serv:result>
<serv:gsbStatus>BACKUP</serv:gsbStatus>
</serv:response>
</serv:header>
<serv:body>
<serv:bodyContent xsi:type="use:getLoginTicketResponse"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<use:ticket>5e9733eb9efeb02d80aa0551ef7e9ccd</use:ticket>
<use:apiVersion>WebEx XML API V3.9.0</use:apiVersion>
</serv:bodyContent>
</serv:body>
</serv:message>
編輯 - 我成功地現在生成我的XML類文件,並在這裏它是
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.webex.com/schemas/2002/06/service/user")]
public partial class getLoginTicketResponse : bodyContentType
{
private string ticketField;
private string apiVersionField;
/// <remarks/>
public string ticket
{
get
{
return this.ticketField;
}
set
{
this.ticketField = value;
}
}
/// <remarks/>
public string apiVersion
{
get
{
return this.apiVersionField;
}
set
{
this.apiVersionField = value;
}
}
}
這是bodyContentType
現在,試圖序列像這樣
var nameSpaceManager = new XmlNamespaceManager(responseXML.NameTable);
nameSpaceManager.AddNamespace("serv", "http://www.webex.com/schemas/2002/06/service");
nameSpaceManager.AddNamespace("com", "http://www.webex.com/schemas/2002/06/common");
nameSpaceManager.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
nameSpaceManager.AddNamespace("meet", "http://www.webex.com/schemas/2002/06/service/meeting");
nameSpaceManager.AddNamespace("att", "http://www.webex.com/schemas/2002/06/service/attendee");
nameSpaceManager.AddNamespace("use", "http://www.webex.com/schemas/2002/06/service/user");
XmlNode statusNode = responseXML.SelectSingleNode("/serv:message/serv:body", nameSpaceManager);
TextReader reader = new StringReader(s);
XmlSerializer serializer = new XmlSerializer(typeof(getLoginTicketResponse));
var obj = serializer.Deserialize(reader);
但繼續得到錯誤 「有XML文檔中的錯誤(1,2)」。 我試着改變xml字符串中的許多東西,但無法取得成功
任何幫助將是可觀的!
這不是一個XSD,這只是對XML響應。 – rene 2011-12-26 12:39:31
@哎呀!好。那麼你能否給我舉一個例子,我怎樣才能爲這個結構設計一個類。我沒有得到什麼應該是類名,什麼應該是這個結構的屬性名稱等。謝謝! – 2011-12-26 12:52:48
我假設你已經得到了終端響應來自的WSDL?這會讓生活更輕鬆。 – rene 2011-12-26 13:01:45