문제

XML 스키마 제 2 부 지정하는 인스턴스는 데이터 형식으로 정의한 부울 수 있는 다음과 같은 법적인 리터럴{true,false,1,0}.다음 XML 는 경우,예를 들어,병렬화된 설정하고,부울 속성"에뮬레이트"하기 true.

<root>
    <emulate>1</emulate>
</root>

그러나 때,나는 직렬화하는 개체를 다시 XML,나 true 신의 숫자 값입니다.나의 질문은 방법이 있는가 통제할 수 있습 boolean 표현에서는 XML?

도움이 되었습니까?

해결책

을 구현할 수 있습니다 IXmlSerializable 할 수 있도록을 변경하는 직렬화된 출력의 클래스입니다.이 수반됩니다 만들은 3 가지 방법을 GetSchema(),ReadXml(의 토대로 몇 가지 요소 r)및 WriteXml(XmlWriter r)을 구현하면 인터페이스,이러한 방법이라고 대신.순도하를 직렬화 개체.

예제에서 찾을 수 있습니다:

http://www.developerfusion.co.uk/show/4639/

http://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable.aspx

다른 팁

이 작업을 수행할 수도 있습니다 사용하여 어떤 XmlSerializer 특성 블랙 마법:

[XmlIgnore]
public bool MyValue { get; set; }

/// <summary>Get a value purely for serialization purposes</summary>
[XmlElement("MyValue")]
public string MyValueSerialize
{
    get { return this.MyValue ? "1" : "0"; }
    set { this.MyValue = XmlConvert.ToBoolean(value); }
}

사용할 수도 있습니다 다른 속성을 숨길이 회원에서 intellisense 당신에게 그것!그것은 완벽한 솔루션을 수 있지만,그것보다 빠른 것을 구현하 IXmlSerializable.

No,사용하지 않는 기본 시스템입니다.Xml.XmlSerializer:할 필요한 데이터 유형을 변경하려면 int 을 달성하는 것,또는 퇴비를 주변에 제공한 당신의 자신의 코드의 직렬화(가능하지만,훨씬 재미있).

그러나,당신은 단순히 포스트-프로세스 생성된 XML 대신은 물론,사용하거나 XSLT,또는 단순히 사용하는 문자열을 사용하고자하는 사람들을 위해.의 비트는 해킹이지만,매우 빠른,모두에서 개발 시간 및 실행 시간...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top