抱歉迟到了。我刚刚完成了集成的开发,我在这里为您提供了方法。
首先,您必须使用 xsd2code++,因为 Microsoft 的 XSD.EXE 不起作用。不要问我为什么,但它没有找到 XSD 文件中包含的导入,或者我没有充分挖掘原因,一旦我尝试了 xsd2code++,只需在 Visual Studio 中右键单击 XSD 并使用选项就轻而易举了那里。
将 XSD 转换为类后,您可以使用以下 3 种方法来使用它。请参阅使用这些方法的以下 2 行代码。不要忘记为 XDocument 添加必要的使用。
在 DHL 网站上注册后,您可以下载 DHL Toolkit PI,其中包含所有 XSD 文件所在的文件夹 XSD。
注意:Xsd2Code++ 的替代方案是 CodePlex 上的 Xsd2code:XSD2CODE快点,因为 CodePlex 正在关闭
string Request = XDocument.Parse(SerializeToXML(Quote)).ToString();
string Response = XDocument.Parse(SendRequest(Request)).ToString();
if (Response.IndexOf("DCTResponse") != -1)
DCTResponse = DeserializeFromXML<DHL.Response.DCTResponse>(Response);
else
DCTErrorResponse = DeserializeFromXML<DHL.Response.ErrorResponse>(Response);
public static string SendRequest(string XML)
{
string Response = "";
try
{
HttpWebRequest myReq = null;
myReq = WebRequest.Create(Properties.Settings.Default.DHLURL) as HttpWebRequest;
myReq.ContentType = "application/x-www-form-urlencoded";
myReq.Method = "POST";
using (System.IO.Stream stream = myReq.GetRequestStream())
{
byte[] arrBytes = ASCIIEncoding.ASCII.GetBytes(XML);
stream.Write(arrBytes, 0, arrBytes.Length);
stream.Close();
}
WebResponse myRes = myReq.GetResponse();
System.IO.Stream respStream = myRes.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.ASCII);
Response = reader.ReadToEnd();
myRes.Close();
myRes = null;
}
catch (Exception ex)
{
Response = ex.ToString();
}
return Response;
}
public static string SerializeToXML<T>(T toSerialize)
{
string Result = "";
XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", "");
using (TextWriter tw = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(tw, new XmlWriterSettings { OmitXmlDeclaration = true }))
{
new XmlSerializer(typeof(T)).Serialize(writer, toSerialize, ns);
Result = tw.ToString();
}
}
return Result;
}
public static T DeserializeFromXML<T>(string xml)
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(new StringReader(xml));
}
希望这可以帮助...