當我在處理XSD中的simpleContent標記時,我的問題是我的WebService產生了正確的XML/JSON。XSD簡單內容與WCF/Web API
首先,我只有一個XSD文件(沒有WSDL),與此內容(簡體):
<xs:complexType name="VerticalDataValue">
<xs:simpleContent>
<xs:extension base="NCADevicePublication:Double">
<xs:attribute name="unit" type="NCADevicePublication:VerticalUnitEnum" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="Double">
<xs:restriction base="xs:double" />
</xs:simpleType>
<xs:simpleType name="VerticalUnitEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="ft"></xs:enumeration>
<xs:enumeration value="m"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
我然後使用XSD.EXE產生我的課。
我有什麼期望這個結構,對XML輸出:
<altitudeCoordinate unit="ft">2.1</altitudeCoordinate>
我能得到什麼:
<altitudeCoordinate>
<Value>2.1</Value>
<unit>ft</unit>
<unitSpecified>true</unitSpecified>
</altitudeCoordinate>
的JSON一樣,我希望:
"altitudeCoordinate": {
"@unit": "ft",
"text": "2.1"
}
但我得到:
"altitudeCoordinate":{
"unit": "ft",
"unitSpecified": "true,
"Value": 2.1
我在MSDN上看到simpleContent限制無法被Xsd.Exe識別。
有沒有辦法讓這種「標準」輸出或.Net不能做到這一點?
感謝
UPDATE
我能夠讓我的WCF服務工作。解決方案非常簡單,只需將[XmlSerializerFormat]放在界面頂部即可。 原因是默認序列化程序(DataContractSerializer)無法正確處理xml屬性。 另外,請注意WCFStorm也使用DataContractSerializer:我發現即使在使用XmlSerializer時,我在WCFStorm中也遇到了錯誤的XML。然後我檢查了SoapUI,它正在工作! (仍然失去了幾個小時)。
所以,現在,讓我們在我的Web API項目這項工作中,JSON ....