>백엔드 개발 >C++ >.NET XML 직렬화에서 네임스페이스 접두사를 제어하는 ​​방법은 무엇입니까?

.NET XML 직렬화에서 네임스페이스 접두사를 제어하는 ​​방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-15 08:10:44270검색

How to Control Namespace Prefixes in .NET XML Serialization?

.NET XML 직렬화: 네임스페이스 접두사 제어

.NET은 두 가지 주요 XML 직렬화 메커니즘인 DataContractSerializerXmlSerializer을 제공합니다. 그러나 기본적으로 생성된 네임스페이스 접두사는 내부 메커니즘에 의해 관리되므로 사용자 지정 접두사의 필요성이 제한됩니다.

XmlSerializer네임스페이스 활용

네임스페이스 별칭을 제어해야 하는 경우 XmlSerializerNamespaces 클래스가 이상적입니다. 직렬화된 XML의 특정 네임스페이스에 대한 별칭을 명시적으로 지정할 수 있습니다.

다음 코드 예제에서는 XmlSerializerNamespaces을 사용하여 네임스페이스 별칭을 제어하는 ​​방법을 보여줍니다.

<code class="language-csharp">[XmlRoot("Node", Namespace = "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e")]
public class MyType
{
    [XmlElement("childNode")]
    public string Value { get; set; }
}

static class Program
{
    static void Main()
    {
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("myNamespace", "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e");
        XmlSerializer xser = new XmlSerializer(typeof(MyType));
        xser.Serialize(Console.Out, new MyType(), ns);
    }
}</code>

이 코드는 "https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e" 네임스페이스에 "myNamespace" 별칭을 할당합니다. 직렬화된 XML 출력은 다음과 같습니다.

<code class="language-xml"><node xmlns:mynamespace="https://www.php.cn/link/8f94eafb14366ce488946e40d8b4694e"><childnode>something in here</childnode></node></code>

XmlAttributeOverrides 사용

런타임 시 네임스페이스를 동적으로 변경하려면 XmlAttributeOverrides 클래스를 사용할 수 있습니다. 특정 유형의 속성에 대한 기본 네임스페이스 설정을 재정의할 수 있습니다.

예를 들어 다음 코드는 XmlAttributeOverrides을 사용하여 네임스페이스를 변경하는 방법을 보여줍니다.

<code class="language-csharp">XmlAttributeOverrides ovrd = new XmlAttributeOverrides();
ovrd.Add(typeof(MyType), "childNode", new XmlAttributeOverrides()
{
    { typeof(XmlElementAttribute), new XmlElementAttribute("childNode", "https://www.php.cn/link/bb01f00daaeac676313d2031dfd1e419") }
});

XmlSerializer xser = new XmlSerializer(typeof(MyType), ovrd);
xser.Serialize(Console.Out, new MyType());</code>

이 코드는 childNode 속성의 기본 네임스페이스를 재정의하여 "https://www.php.cn/link/bb01f00daaeac676313d2031dfd1e419"을 가리킵니다.

위 내용은 .NET XML 직렬화에서 네임스페이스 접두사를 제어하는 ​​방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.