XmlSerializer를 사용하여 문자열을 CDATA로 직렬화
.NET용 XmlSerializer에서는 속성을 사용하여 문자열을 CDATA로 직렬화할 수 있나요?
해결책:
.NET의 XmlSerializer 클래스는 속성을 사용한 CDATA 직렬화를 직접 허용하지 않습니다. 그러나 XmlIgnore 속성과 사용자 지정 속성의 조합을 사용하여 원하는 결과를 얻을 수 있습니다.
다음은 이 접근 방식을 보여주는 예제 클래스입니다.
<code class="language-csharp">[Serializable] public class MyClass { public MyClass() { } [XmlIgnore] public string MyString { get; set; } [XmlElement("MyString")] public System.Xml.XmlCDataSection MyStringCDATA { get { return new System.Xml.XmlDocument().CreateCDataSection(MyString); } set { MyString = value.Value; } } }</code>
이 사용자 정의 클래스에서는 XmlIgnore 특성을 사용하여 직렬화에서 MyString 속성을 제외합니다. 대신 필요한 문자열을 캡슐화하는 System.Xml.XmlCDataSection 개체를 반환하는 새로운 MyStringCDATA 속성이 정의됩니다. 이를 통해 추가 속성 없이 CDATA 직렬화가 가능합니다.
사용법:
이 방법을 사용하려면 MyClass 인스턴스를 만들고 MyString 속성을 설정한 다음 XmlSerializer를 사용하여 직렬화합니다.
<code class="language-csharp">MyClass mc = new MyClass(); mc.MyString = "<test>Hello World</test>"; XmlSerializer serializer = new XmlSerializer(typeof(MyClass)); StringWriter writer = new StringWriter(); serializer.Serialize(writer, mc); Console.WriteLine(writer.ToString());</code>
출력:
다음과 같은 XML 출력이 생성됩니다.
<code class="language-xml"><?xml version="1.0" encoding="utf-16"?><myclass xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><mystring><![CDATA[Hello World]]></mystring></myclass></code>
MyString 값은 예상대로 CDATA 섹션에 래핑되어 있습니다.
위 내용은 .NET XmlSerializer는 특성을 사용하여 문자열을 CDATA로 직렬화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!