0
我们正在开发SOAP Web服务必须响应返回下面的示例XML结构:C#如何防止在使用SOAP Web Service时生成二维数组?
<?xml version="1.0" encoding="UTF-8"?>
<response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<result code="2" service="2">
<data>
<input key="k2" keyTitle="kt2" value="v2" valueTitle="vt2" />
<nested id="1">
<data xmlns="InnerData">
<input key="deb-num" keyTitle="nese" value="141" valueTitle="141" />
<input key="deb-sum" keyTitle="" value="borcun meblegi" valueTitle="10.00" />
<input key="deb-type" keyTitle="borcun neise" value="MA" valueTitle="MA" />
<input key="title" keyTitle="titleee" value="10.00" valueTitle="10.00" />
</data>
<data xmlns="InnerData">
<input key="deb-num" keyTitle="nese" value="141" valueTitle="141" />
<input key="deb-sum" keyTitle="" value="borcun meblegi" valueTitle="10.00" />
<input key="deb-type" keyTitle="borcun neise" value="MA" valueTitle="MA" />
<input key="title" keyTitle="titleee" value="10.00" valueTitle="10.00" />
</data>
</nested>
</data>
</result>
</response>
我创建的类结构,这样做没有问题。上面的示例结构是通过应用程序生成的。下面我列出的只是部分班从Nested
对象
public class Nested
{
[System.Xml.Serialization.XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
[System.Xml.Serialization.XmlElement(Namespace = "InnerData", ElementName = "data")]
public Data[] Data { get; set; }
}
public class Data
{
[System.Xml.Serialization.XmlElement(Namespace = "InnerData", ElementName = "input")]
public Input[] Input { get; set; }
}
public class Input
{
private string _key;
private string _keyTitle;
private string _value;
private string _valueTitle;
[System.Xml.Serialization.XmlAttribute(AttributeName = "key")]
public string Key
{
get { return _key; }
set { _key = value; }
}
[System.Xml.Serialization.XmlAttribute(AttributeName = "keyTitle")]
public string KeyTitle
{
get { return _keyTitle; }
set { _keyTitle = value; }
}
[System.Xml.Serialization.XmlAttribute(AttributeName = "value")]
public string Value
{
get { return _value; }
set { _value = value; }
}
[System.Xml.Serialization.XmlAttribute(AttributeName = "valueTitle")]
public string ValueTitle
{
get { return _valueTitle; }
set { _valueTitle = value; }
}
}
的问题与消费者相关的开始。我为此测试目的创建了此Web服务的使用者。它生成的参考将Data[] Data
中的Nested
对象转换为Input
的二维数组。下面是从生成的Reference.cs对象Nested
:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.1064.2")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/")]
public partial class Nested : object, System.ComponentModel.INotifyPropertyChanged {
private Input1[][] dataField;
private string idField;
/// <remarks/>
[System.Xml.Serialization.XmlArrayAttribute(Namespace="InnerData", Order=0)]
[System.Xml.Serialization.XmlArrayItemAttribute("input", typeof(Input1), IsNullable=false)]
public Input1[][] data {
get {
return this.dataField;
}
set {
this.dataField = value;
this.RaisePropertyChanged("data");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string id {
get {
return this.idField;
}
set {
this.idField = value;
this.RaisePropertyChanged("id");
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName) {
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null)) {
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
如何禁用到转换Data
对象Data[] Data
(其中包含Input
对象的数组)Input
对象Input1[][]
同时产生消费者的二维阵列的阵列?