모든 특성을 제거하는 ServiceStack.Text.XmlSerializer.Serialize를 사용하여 다음 개체를 직렬화해야합니다. 나는 그것이 나쁜 습관이라는 것을 알고 있지만 시뮬레이션 된 XML을 통해 오래된 C ++로 작성된 서버와 대화해야하며 (수동으로 구문 분석 됨) 속성을 처리하지 않습니다.
내 수업은
[DataContract(Namespace = "", Name = "DataValutaRequest")]
public class DateValueRequestPayload
{
[DataMember()]
public int Cross { get; set; }
[DataMember()]
public DateTime TradeDate { get; set; }
}
그리고 그것은 직렬화되었습니다
<?xml version="1.0" encoding="utf-8"?><DataValutaRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Cross>11</Cross><TradeDate>2015-07-27T00:00:00+02:00</TradeDate></DataValutaRequest>
제거해야합니다
<?xml version="1.0" encoding="utf-8"?>
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
어떻게 할 수 있습니까? 감사
xmlns:i
XML 네임 스페이스가 자동으로 .NET의 DataContractSerializer에 의해 방출되고 생략 할 수있는 옵션을 제공하지 않습니다.
이를 제거하는 유일한 방법은 XML로 직렬화 한 다음 원시 XML에서 속성을 제거하는 것입니다. 예를 들면 다음과 같습니다.
var xml = dto.ToXml()
.Replace(" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"","");
return xml;
더 복잡한 요구 사항이있는 경우 XDocument를 사용하여 XML 로드 및 제거를 살펴볼 수도 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다