【发布时间】:2021-04-01 13:29:19
【问题描述】:
我正在.NET Core 5.0 中编写SoapCore Web 服务,并且我已经成功地能够通过SOAPUI 执行请求并获得有效响应。我唯一不喜欢的是它在 repose 消息中添加了不需要的前缀。例如在这个回复中:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<s:Body>
<getMeterIntervalDataByTimeSliceResponse xmlns="http://tempuri.org/">
<getMeterIntervalDataByTimeSliceResult xmlns:d4p1="http://schemas.datacontract.org/2004/07/MeterDataWebService.Models" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<d4p1:AccountId>1234567890</d4p1:AccountId>
<d4p1:ID>0</d4p1:ID>
<d4p1:IntervalEndTime>2020-12-22T15:30:57.3705724-05:00</d4p1:IntervalEndTime>
<d4p1:IntervalLengthInSeconds>PT5M</d4p1:IntervalLengthInSeconds>
<d4p1:Load>2345.8010350836185</d4p1:Load>
<d4p1:MeterChannel>1</d4p1:MeterChannel>
<d4p1:TimeZone>UT</d4p1:TimeZone>
<d4p1:UnitOfMeasure>KM</d4p1:UnitOfMeasure>
<d4p1:UtcOffset>0</d4p1:UtcOffset>
</getMeterIntervalDataByTimeSliceResult>
</getMeterIntervalDataByTimeSliceResponse>
</s:Body>
</s:Envelope>
如何去掉“d4p1”前缀?
【问题讨论】:
-
您是否在服务中使用 xml 序列化。要删除前缀,您需要向 [XmlElement(ElementName = "AccountId", Namespace = "")] 添加一个带有空字符串的命名空间。
-
@jdweng 如果我必须更换 d4p1 吗?我需要将 xmlns:a 设置为我的响应结果,但我不明白该怎么做。我会避免实现消息格式类,因为如果我理解正确,这将是对已经完成的结果的额外解析工作。
-
@dpope :最好离开命名空间 d4p1。要解析所有你需要做的就是向定义命名空间的 c# 类添加一个属性。添加命名空间比修改xml更容易。
-
你已经为解析做了哪些工作?