我正在开发一个Web服务,以便在两个ERP系统之间共享数据。第一个ERP调用webservice,它将数据对象序列化并将其发送到第二个ERP。
数据对象如下所示:
<xs:complexType name="Parent">
<xs:sequence>
<xs:element ref="ta:ReceiptLine" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Child">
<xs:sequence>
...
<xs:element name="SerialNo" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="Quantity" type="xs:int" nillable="false"/>
...
</xs:sequence>
</xs:complexType>
...
<xs:element name="Child" type="ta:Child" nillable="true"/>
XSD生成的类:
[System.Serializable]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://FSM4TA/DataObjects/")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://FSM4TA/DataObjects/", IsNullable=false)]
public partial class Parent {
private Child[] child;
[System.Xml.Serialization.XmlElementAttribute("Child", IsNullable=true)]
public Child[] Child {
get {return this.child;}
set {this.child = value;}
}
[System.Serializable]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://FSM4TA/DataObjects/")]
[System.Xml.Serialization.XmlRootAttribute(Namespace="http://FSM4TA/DataObjects/", IsNullable=true)]
public partial class Child{
private string serialNo;
private int quantity;
[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public string SerialNo {
get {return this.serialNo;}
set {this.serialNo = value;}
}
public int Quantity {
get { return this.quantity;}
set {this.quantity = value;}
}
}
我正在使用XmlSerializer
序列化我的数据对象问题是 :(在序列化时)每次Child对象为空(xsi:nil =“true”)时,XSD都会生成整个Child结构。因为数量不是可存储/可空的,所以XSD会将 0 写为值......就像这样:
<Parent>
<Child xsi:nil="true">
<SerialNo xsi:nil="true" />
<Quantity>0</Quantity>
</Child>
</Parent>
我希望得到这样的东西:
<Parent>
</Child xsi:nil="true">
</Parent>
问题:有没有办法阻止XSD解析xsi:nil =“true”-Object ??
有什么建议吗?
TIA
答案 0 :(得分:1)
好的,
我现在知道了! 您必须明确标记XmlElementAttribute的 Quantity 属性!
[XmlElement(IsNullable=false)]
public int Quantity {
get { return this.quantity;}
set {this.quantity = value;}
}
不知道为什么没有自动生成...