.NET XmlSerializer의 CDATA 속성 부족에 대한 기발한 솔루션
.NET 프레임워크의 XmlSerializer는 개체를 XML 문서로 직렬화하는 강력한 기능을 제공합니다. 그러나 CDATA에 대한 문자열 직렬화를 지정하는 직접적인 속성이 부족합니다.
창의적인 솔루션
이 제한 사항을 해결하려면 기발한 해결 방법을 사용할 수 있습니다. 원하는 CDATA 동작을 캡슐화하는 사용자 정의 속성을 구현함으로써 원하는 효과를 얻을 수 있습니다.
<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>
이 사용자 정의 속성:
MyString
: 직렬화할 실제 문자열을 나타냅니다. MyStringCDATA
: 문자열을 CDATA로 또는 그 반대로 변환하기 위한 getter 및 setter 메서드를 구현합니다. 사용법:
이 솔루션을 사용하려면 다음 단계를 따르세요.
<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>
이 코드는 CDATA에 문자열이 포함된 예상 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[<test>Hello World</test>]]></mystring></myclass></code>
(참고: 출력 XML 예제는 .NET 버전 및 직렬화 설정에 따라 원본과 약간 다를 수 있습니다. 중요한 것은 MyStringCDATA
특성이 CDATA 섹션의 문자열을 성공적으로 캡슐화한다는 것입니다.)
위 내용은 .NET의 XmlSerializer를 사용하여 문자열을 CDATA로 직렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!