다음을 통해 공유


XmlSerializerNamespaces 클래스

XmlSerializer가 XML 문서 인스턴스에서 정규화된 이름을 생성하는 데 사용하는 XML 네임스페이스 및 접두사를 포함합니다.

네임스페이스: System.Xml.Serialization
어셈블리: System.Xml(system.xml.dll)

구문

‘선언
Public Class XmlSerializerNamespaces
‘사용 방법
Dim instance As XmlSerializerNamespaces
public class XmlSerializerNamespaces
public ref class XmlSerializerNamespaces
public class XmlSerializerNamespaces
public class XmlSerializerNamespaces

설명

XmlSerializerNamespaces는 각각 관련 접두사가 붙은 XML 네임스페이스의 컬렉션을 포함합니다. XmlSerializerXmlSerializerNamespaces 클래스의 인스턴스를 사용하여 XML 문서 인스턴스에 정규화된 이름을 만듭니다.

XmlSerializerNamespaces에 포함된 XML 네임스페이스는 www.w3.org의 Namespaces in XML 사양을 준수해야 합니다.

XML 네임스페이스는 XML 문서에서 XML 요소 및 특성의 이름을 정규화하는 방법을 제공합니다. 정규화된 이름은 콜론으로 구분되는 접두사와 로컬 이름으로 구성됩니다. 접두사는 자리 표시자로만 사용되며 네임스페이스를 지정하는 URI에 매핑됩니다. 유니버설로 관리되는 URI 네임스페이스와 로컬 이름을 조합하면 보편적으로 고유한 이름이 만들어집니다.

XML 인스턴스 문서에서 정규화된 이름을 만들려면

  1. XmlSerializerNamespaces 인스턴스를 만듭니다.

  2. 원하는 각 접두사 및 네임스페이스 쌍을 인스턴스에 Add합니다.

  3. XmlSerializer가 XML 문서로 serialize할 각 속성 또는 클래스에 해당 .NET 특성을 적용합니다. 사용할 수 있는 특성은 다음과 같습니다.

  1. 각 특성의 Namespace 속성을 XmlSerializerNamespaces 개체의 네임스페이스 값 중 하나로 설정합니다.

  2. XmlSerializerSerialize 메서드에 XmlSerializerNamespaces를 전달합니다.

참고

빈 네임스페이스와 접두사 쌍을 만들 수 없습니다. 즉, 다음 코드를 사용하여 쌍을 만들 수 없습니다.

XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); 
ns.Add("", "");
Dim ns As XmlSerializerNamespaces ns = New XmlSerializerNamespaces()
ns.Add("", "")

예제

다음 예제에서는 XmlSerializerNamespaces 개체를 만들고 이 개체에 두 개의 접두사와 네임스페이스 쌍을 추가합니다. 그런 다음 Books 개체를 XML 문서 인스턴스로 serialize하는 Serialize 메서드에 XmlSerializerNamespaces를 전달합니다. Serialize 메서드는 XmlSerializerNamespaces 개체를 사용하여 각 XML 요소 및 특성을 두 개의 네임스페이스 중 하나로 지정합니다.

Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization


Public Class Run
    
    Public Shared Sub Main()
        Dim test As New Run()
        test.SerializeObject("XmlNamespaces.xml")
    End Sub    
    
    Public Sub SerializeObject(ByVal filename As String)
        Dim s As New XmlSerializer(GetType(Books))
        ' Writing a file requires a TextWriter.
        Dim t As New StreamWriter(filename)
        
        ' Create an XmlSerializerNamespaces object and add two
        ' prefix-namespace pairs. 
        Dim ns As New XmlSerializerNamespaces()
        ns.Add("books", "http://www.cpandl.com")
        ns.Add("money", "http://www.cohowinery.com")
        
        ' Create a Book instance.
        Dim b As New Book()
        b.TITLE = "A Book Title"
        Dim p As New Price()
        p.price = CDec(9.95)
        p.currency = "US Dollar"
        b.PRICE = p
        Dim bks As New Books()
        bks.Book = b
        s.Serialize(t, bks, ns)
        t.Close()
    End Sub
End Class

Public Class Books
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public Book As Book
End Class

<XmlType(Namespace := "http://www.cpandl.com")> _
Public Class Book
    <XmlElement(Namespace := "http://www.cpandl.com")> _
    Public TITLE As String

    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public PRICE As Price
End Class

Public Class Price
    <XmlAttribute(Namespace := "http://www.cpandl.com")> _
    Public currency As String
    
    <XmlElement(Namespace := "http://www.cohowinery.com")> _
    Public price As Decimal
End Class
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
 
public class Run
{
   public static void Main()
   {
      Run test = new Run();
      test.SerializeObject("XmlNamespaces.xml");
   }
 
   public void SerializeObject(string filename)
   {
      XmlSerializer s = new XmlSerializer(typeof(Books));
      // Writing a file requires a TextWriter.
      TextWriter t = new StreamWriter(filename);

      /* Create an XmlSerializerNamespaces object and add two
      prefix-namespace pairs. */
      XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
      ns.Add("books", "http://www.cpandl.com");
      ns.Add("money", "http://www.cohowinery.com");

      // Create a Book instance.
      Book b = new Book();
      b.TITLE = "A Book Title";
      Price p = new Price();
      p.price = (decimal) 9.95;
      p.currency = "US Dollar";
      b.PRICE = p;
      Books bks = new Books();
      bks.Book = b;
      s.Serialize(t,bks,ns);
      t.Close();
   }
}

public class Books
{
   [XmlElement(Namespace = "http://www.cohowinery.com")]
   public Book Book;
}

[XmlType(Namespace ="http://www.cpandl.com")]
public class Book
{
   [XmlElement(Namespace = "http://www.cpandl.com")]
   public string TITLE;
   [XmlElement(Namespace ="http://www.cohowinery.com")]
   public Price PRICE;
}

public class Price
{
   [XmlAttribute(Namespace = "http://www.cpandl.com")]
   public string currency;
   [XmlElement(Namespace = "http://www.cohowinery.com")]
   public decimal price;
}
#using <System.Xml.dll>
#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Serialization;
public ref class Price
{
public:

   [XmlAttributeAttribute(Namespace="http://www.cpandl.com")]
   String^ currency;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Decimal price;
};

[XmlType(Namespace="http://www.cpandl.com")]
public ref class Book
{
public:

   [XmlElement(Namespace="http://www.cpandl.com")]
   String^ TITLE;

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Price^ PRICE;
};

public ref class Books
{
public:

   [XmlElement(Namespace="http://www.cohowinery.com")]
   Book^ Book;
};

public ref class Run
{
public:
   static void main()
   {
      Run^ test = gcnew Run;
      test->SerializeObject( "XmlNamespaces.xml" );
   }

   void SerializeObject( String^ filename )
   {
      XmlSerializer^ s = gcnew XmlSerializer( Books::typeid );

      // Writing a file requires a TextWriter.
      TextWriter^ t = gcnew StreamWriter( filename );

      /* Create an XmlSerializerNamespaces object and add two
            prefix-namespace pairs. */
      XmlSerializerNamespaces^ ns = gcnew XmlSerializerNamespaces;
      ns->Add( "books", "http://www.cpandl.com" );
      ns->Add( "money", "http://www.cohowinery.com" );

      // Create a Book instance.
      Book^ b = gcnew Book;
      b->TITLE = "A Book Title";
      Price^ p = gcnew Price;
      p->price = (Decimal)9.95;
      p->currency = "US Dollar";
      b->PRICE = p;
      Books^ bks = gcnew Books;
      bks->Book = b;
      s->Serialize( t, bks, ns );
      t->Close();
   }
};

int main()
{
   Run::main();
}
import System.*;
import System.IO.*;
import System.Xml.*;
import System.Xml.Serialization.*;

public class Run
{
    public static void main(String[] args)
    {
        Run test = new Run();
        test.SerializeObject("XmlNamespaces.xml");
    } //main

    public void SerializeObject(String filename)
    {
        XmlSerializer s = new XmlSerializer(Books.class.ToType());

        // Writing a file requires a TextWriter.
        TextWriter t = new StreamWriter(filename);

        /* Create an XmlSerializerNamespaces object and add two
           prefix-namespace pairs. */
        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
        ns.Add("books", "http://www.cpandl.com");
        ns.Add("money", "http://www.cohowinery.com");

        // Create a Book instance.
        Book b = new Book();
        b.title = "A Book Title";

        Price p = new Price();
        p.price = Convert.ToDecimal(9.95);
        p.currency = "US Dollar";
        
        b.price = p;

        Books bks = new Books();
        bks.book = b;

        s.Serialize(t, bks, ns);
        t.Close();
    } //SerializeObject
} //Run

public class Books
{
    /** @attribute XmlElement(Namespace = "http://www.cohowinery.com")
     */
    public Book book;
} //Books

/** @attribute XmlType(Namespace = "http://www.cpandl.com")
 */
public class Book
{
    /** @attribute XmlElement(Namespace = "http://www.cpandl.com")
     */
    public String title;
    /** @attribute XmlElement(Namespace = "http://www.cohowinery.com")
     */
    public Price price;
} //Book

public class Price
{
    /** @attribute XmlAttribute(Namespace = "http://www.cpandl.com")
     */
    public String currency;
    /** @attribute XmlElement(Namespace = "http://www.cohowinery.com")
     */
    public System.Decimal price;
} //Price

상속 계층 구조

System.Object
  System.Xml.Serialization.XmlSerializerNamespaces

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

XmlSerializerNamespaces 멤버
System.Xml.Serialization 네임스페이스
XmlAttributes 클래스

기타 리소스

XML Serialization 소개
방법: XML 스트림의 대체 요소 이름 지정
특성을 사용하여 XML Serialization 제어
XML Serialization 예
XML 스키마 정의 도구(Xsd.exe)