XmlTextWriter의 네임스페이스 기능

업데이트: November 2007

네임스페이스는 XML 문서에서 요소 및 특성 이름을 정규화하는 데 사용하는 기법입니다. 네임스페이스 접두사가 요소와 특성을 네임스페이스와 연결한 후, 해당 요소와 특성은 URI(Uniform Resource Identifier) 참조와 연결됩니다. 네임스페이스는 XML 문서에서 요소 및 특성 이름을 고유하게 만듭니다.

다음 목록은 XmlTextWriter에 응용 프로그램에서 여러 가지 방법으로 네임스페이스를 선언할 수 있도록 하는 메서드가 있음을 보여 줍니다. 이 메서드의 기능은 다음과 같습니다.

  • 수동으로 네임스페이스 선언

  • 현재 네임스페이스 선언을 새 네임스페이스로 재정의

  • 네임스페이스를 여러 개 선언

네임스페이스를 선언할 뿐만 아니라 요소와 특성에 네임스페이스 접두사를 추가할 수도 있습니다. 특성에 대한 네임스페이스 접두사를 작성할 때는 다음 메서드가 사용됩니다.

  • WriteAttributes

  • WriteAttributeString

  • WriteStartAttribute

특성에 대한 접두사를 작성하는 방법에 대한 자세한 내용은 XmlTextWriter의 특성 네임스페이스 접두사를 참조하십시오.

요소에 대한 네임스페이스 접두사를 작성할 때는 다음 메서드가 사용됩니다.

  • WriteElement

  • WriteElementString

  • WriteStartElement

요소에 대한 접두사를 작성하는 방법에 대한 자세한 내용은 XmlTextWriter의 요소 네임스페이스 접두사를 참조하십시오.

이 작성기는 요소가 정의한 네임스페이스를 추적하는 네임스페이스 스택을 유지 관리합니다. 다음 코드 예제에서는 요소를 작성할 때 네임스페이스 스택을 사용하는 방법을 보여 줍니다.

Dim w As New XmlTextWriter(Console.Out)
w.WriteStartElement("root", "urn:1")
w.WriteStartElement("item", "urn:2")
w.WriteEndElement()
w.WriteEndElement()
w.Close()
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.WriteStartElement("root","urn:1");
w.WriteStartElement("item","urn:2");
w.WriteEndElement();
w.WriteEndElement(); 
w.Close();

출력

<root xmlns="urn:1">
      <item xmlns="urn:2"/>
</root>

다음 예제에서는 중첩된 요소에 중복되는 네임스페이스 선언을 사용한 경우의 결과를 보여 줍니다. 출력의 빈 item 요소는 네임스페이스 선언을 반복하지 않습니다.

Dim w As New XmlTextWriter(Console.Out)
w.WriteStartElement("root", "urn:1")
w.WriteStartElement("item", "urn:1")
w.WriteEndElement()
w.WriteEndElement()
w.Close()
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.WriteStartElement("root","urn:1");
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteEndElement(); 
w.Close();

출력

<root xmlns="urn:1"><item/></root>

XmlTextWriter를 사용하여 수동으로 네임스페이스 선언

네임스페이스 선언의 개수를 최적화하기 위해 네임스페이스 선언을 수동으로 작성할 수 있습니다. 다음 코드 예제에서는 네임스페이스 선언의 개수를 최적화하는 방법을 보여 줍니다.

w.WriteStartElement("root")
w.WriteAttributeString("xmlns", "x", Nothing, "urn:1")
w.WriteStartElement("item", "urn:1")
w.WriteEndElement()
w.WriteStartElement("item", "urn:1")
w.WriteEndElement()
w.WriteEndElement()
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x", null, "urn:1");
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteEndElement();

출력

<root xmlns:x="urn:1">
    <x:item/>
    <x:item/>
</x:root>

앞의 코드 예제에서는 네임스페이스 선언을 root 요소로 승격시켜 네임스페이스 선언이 두 자식 요소에서 중복되지 않도록 합니다. item 요소도 네임스페이스 선언에서 접두사를 선택합니다.

XmlTextWriter를 사용하여 네임스페이스 선언 재정의

다음 코드 예제에서는 주어진 접두사와 연결된 네임스페이스를 수동으로 재정의하는 방법을 보여 줍니다. order 값이 원래 네임스페이스인 123 URI를 재정의하고, 새 요소 범위에 네임스페이스가 다시 정의됩니다.

w.WriteStartElement("x", "node", "123")
w.WriteAttributeString("xmlns", "x", Nothing, "order")
w.WriteStartElement("x","node","123");
w.WriteAttributeString("xmlns","x",null,"order");

출력

<x:node xmlns:x="order"/>

XmlTextWriter를 사용하여 네임스페이스를 여러 개 선언

네임스페이스 선언이 여러 개일 경우에는 XmlWriter 클래스가 같은 URN(Uniform Resource Name)에 서로 다른 접두사를 매핑한 다음 네임스페이스 선언 스택으로 이동하여 가장 가까운 네임스페이스를 선택합니다. 다음 코드 예제에서는 WriteAttributeString이 접두사를 지정하지 않음으로써 XmlWritery 접두사를 먼저 찾도록 하는 방법을 보여 줍니다.

Dim w As New XmlTextWriter(Console.Out)
w.WriteStartElement("x", "root", "urn:1")
w.WriteStartElement("y", "item", "urn:1")
w.WriteAttributeString("abc", "urn:1", "xyz")
w.WriteEndElement()
w.WriteEndElement()
w.Close()
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteAttributeString("abc","urn:1","xyz");
w.WriteEndElement();
w.WriteEndElement();
w.Close();

출력

<x:root xmlns:x="urn:1">
    <y:item y:abc="xyz" xmlns:y="urn:1"/>
</x:root>

참고 항목

개념

XmlTextWriter를 사용하여 제대로 구성된 XML 만들기

XmlTextWriter를 사용하여 XML 출력 서식 지정

참조

XmlTextWriter

XmlTextWriter

XmlWriter

XmlWriter

기타 리소스

XmlWriter를 사용하여 XML 작성