. 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