"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > .NET XML 직렬화에서 네임 스페이스 접두사를 제어하는 ​​방법은 무엇입니까?

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

2025-04-16에 게시되었습니다
검색:629

How to Control Namespace Prefixes in .NET XML Serialization?

. NET XML 시리얼 화 : 네임 스페이스 접두사 제어

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

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

다음 코드 예제는 xmlserializernamespaces :

를 사용하여 네임 스페이스 별칭을 제어하는 ​​방법을 보여줍니다.

[xmlRoot ( "노드", 네임 스페이스 = "http : // flibble")] 공개 클래스 MyType { [xmlelement ( "Childnode")] 공개 문자열 값 {get; 세트; } } 정적 클래스 프로그램 { 정적 void main () { xmlserializernamepaces ns = new xmlserializernamespaces (); ns.add ( "mynamespace", "http : // flibble"); xmlserializer xser = new xmlserializer (typeof (mytype)); xser.serialize (Console.out, New MyType (), NS); } }

[XmlRoot("Node", Namespace = "http://flibble")]
public class MyType
{
    [XmlElement("childNode")]
    public string Value { get; set; }
}

static class Program
{
    static void Main()
    {
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("myNamespace", "http://flibble");
        XmlSerializer xser = new XmlSerializer(typeof(MyType));
        xser.Serialize(Console.Out, new MyType(), ns);
    }
}

여기있는 것

something in here
사용

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

예를 들어, 다음 코드는 xmlattributeOverrides :

를 사용하여 네임 스페이스를 변경하는 방법을 보여줍니다.

xmlattributeoverrides ovrd = new xmlattributeOverrides (); ovrd.add (typeof (mytype), "Childnode", new xmlattributeOverrides () { {typeof (xmlelementattribute), new xmlelementattribute ( "childnode", "http : // onternameamespace")} }); xmlserializer xser = new xmlserializer (typeof (mytype), ovrd); xser.serialize (console.out, new mytype ());

XmlAttributeOverrides ovrd = new XmlAttributeOverrides();
ovrd.Add(typeof(MyType), "childNode", new XmlAttributeOverrides()
{
    { typeof(XmlElementAttribute), new XmlElementAttribute("childNode", "http://alternateNamespace") }
});

XmlSerializer xser = new XmlSerializer(typeof(MyType), ovrd);
xser.Serialize(Console.Out, new MyType());
http : // onternameamespace

로 지적합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3