我必須處理以下問題。我有一個SOAP服務器和一個SOAP客戶端,與SAP系統同步工作。我收到所有充滿數據的類的查詢,然後編輯我的客戶端,再次發送給他們(我正在尋找SAP向我發送可用數據,我們將處理它,並將其發回)。問題是生成的代理類讀取和重新讀取數據有點不同。我正在尋找2天的方式來真正確定!由於有非常敏感的數據,哪裏不能輸。序列化代理類和反序列化在其他代理類
這裏是代理類的一個實例中,服務器接收的數據。
[GeneratedCode("svcutil", "3.0.4506.2152")]
[Serializable]
[DebuggerStepThrough]
[DesignerCategory("code")]
[XmlType(AnonymousType=true, Namespace="urn:sap-com:document:sap:soap:functions:mc-style")]
public partial class _wsv_cas01d0005p0000013303Response
{
private _wsv_cas01Rs0000S[] ec_20KiField;
private _wsv_cas01Rs0000S[] ec_21KiField;
private _wsv_cas01Rs0000S[] ec_23KiField;
private _wsv_caSafMsgExternalS[] etMessagesField;
private string evCeeRequestIdField;
private int evStatusCodeField;
[XmlArray(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
[XmlArrayItem("item", Form=XmlSchemaForm.Unqualified, IsNullable=false)]
public _wsv_cas01Rs0000S[] Ec_20Ki
{
get
{
return this.ec_20KiField;
}
set
{
this.ec_20KiField = value;
}
}
這裏是另外一個類的實例,代理將被再次填充:
[GeneratedCode("svcutil", "3.0.4506.2152")]
[Serializable]
[DebuggerStepThrough]
[DesignerCategor("code")]
[XmlType(AnonymousType=true, Namespace="urn:sap-com:document:sap:soap:functions:mc-style")]
public partial class _wsv_cas01d0005p0000013203
{
private _wsv_cas01Rq0012210001S[] ic_20KiField;
private _wsv_cas01Rq0012210002S[] ic_21KiField;
private _wsv_cas01Rq0012210003S[] ic_23KiField;
private string ivBoIdField;
private string ivBoTypeCdField;
private string ivCbDestinationField;
[XmlArray(Form=XmlSchemaForm.Unqualified, Order=0)]
[XmlArrayItem("item", Form=XmlSchemaForm.Unqualified, IsNullable=false)]
public _wsv_cas01Rq0012210001S[] Ic_20Ki
{
get
{
return this.ic_20KiField;
}
set
{
this.ic_20KiField = value;
}
}
正如你所看到的頭已經寫入了SOAP,所以我不能輕易更改名稱的另一個客戶端。
使用這種方法,我已經花能夠充分利用SOAP消息來記錄類的XML代碼。不幸的是,Naur的名字完全錯了。
public static string ObjectToXml(object input)
{
string objectAsXmlString;
XmlSerializer xs = new XmlSerializer(input.GetType());
XmlSerializerNamespaces test = new XmlSerializerNamespaces();
using (StringWriter sw = new StringWriter())
{
try
{
xs.Serialize(sw, input);
objectAsXmlString = sw.ToString();
}
catch (Exception ex)
{
objectAsXmlString = ex.ToString();
}
}
return objectAsXmlString;
}
閱讀發回給包客戶端的代碼,我已經意識到了。通過修改的XML代碼,它可以工作!只要考慮到豐富的結果。
XmlSerializer serializer = new XmlSerializer(typeof(_wsv_cas01d0005p0000013203));
_wsv_cas01d0005p0000013203 Requestdaten = (_wsv_cas01d0005p0000013203)serializer.Deserialize(xmlDoc);
所以,現在我缺少一種方法來轉換XML,以及存在變數是不明確的,所以我可以填補留下的類。我已經完成了XPATH和XSD的讀取,但我並不是真正需要的。也許甚至有人會見過類似的情況,給我一個小費? PS:我希望可以閱讀其中的一個翻譯文本。不幸的是,對於這樣複雜的案件,我的英語太複雜了。