XmlWriter에서의 네임스페이스 처리

업데이트: November 2007

네임스페이스는 XML 문서에서 요소 및 특성 이름을 정규화하는 데 사용합니다. 네임스페이스 접두사는 요소와 특성을 네임스페이스와 연결하고 이는 다시 URI 참조와 연결됩니다. 네임스페이스는 XML 문서에서 요소 및 특성 이름을 고유하게 만듭니다.

XmlWriter는 현재 네임스페이스 범위에 정의된 모든 네임스페이스에 해당하는 네임스페이스 스택을 유지 관리합니다. 요소와 특성을 작성할 때 다음과 같은 방법으로 네임스페이스를 사용할 수 있습니다.

  • 수동으로 네임스페이스를 선언합니다.

  • 현재 네임스페이스 선언을 새 네임스페이스로 재정의합니다.

  • 특성 또는 요소를 작성할 때 네임스페이스 접두사를 지정합니다.

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

WriteAttributeString 메서드를 사용하여 수동으로 네임스페이스 선언을 작성할 수 있습니다. 이 기능은 네임스페이스 선언 수를 최적화하는 방법을 알 경우에 유용할 수 있습니다. 다음 코드에서는 루트 요소에 네임스페이스 선언이 생성됩니다.

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

이 코드는 다음 XML 문자열을 생성합니다.

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

네임스페이스 선언이 root 요소에 있기 때문에 두 자식 요소에서 중복되지 않습니다. item 요소도 네임스페이스 선언에서 접두사를 선택합니다.

현재 네임스페이스 재정의

주어진 접두사와 연결된 네임스페이스를 수동으로 재정의할 수 있습니다. 다음 코드에서는 "x" 접두사에 대한 네임스페이스 URI가 "123"에서 "abc"로 변경됩니다.

writer.WriteStartElement("x", "root", "123")
writer.WriteStartElement("item")
writer.WriteAttributeString("xmlns", "x", Nothing, "abc")
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteStartElement("x","root","123");
writer.WriteStartElement("item");
writer.WriteAttributeString("xmlns","x",null,"abc");
writer.WriteEndElement();
writer.WriteEndElement();

이 코드는 다음 XML 문자열을 생성합니다.

<x:root xmlns:x="123">
  <item xmlns:x="abc" />
</x:root>

네임스페이스 접두사 지정

요소나 특성을 작성할 때 접두사를 명시적으로 지정하면 사용할 네임스페이스 접두사를 전달할 수 있습니다. 요소와 특성을 작성할 때 사용하는 여러 메서드를 통해 네임스페이스 접두사를 지정할 수 있습니다. 다음 코드에서는 요소를 작성할 때 접두사를 지정하는 방법을 보여 줍니다.

writer.WriteStartElement("x", "root", "urn:1")
writer.WriteStartElement("y", "item", "urn:1")
writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteStartElement("x","root","urn:1");
writer.WriteStartElement("y","item","urn:1");
writer.WriteEndElement();
writer.WriteEndElement();

이 코드는 다음 XML 문자열을 작성합니다.

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

XmlWriter는 접두사 "x"와 "y"를 둘 다 유지합니다.

참고:

XmlTextWriter를 비롯한 모든 XmlWriter 구현에서는 접두사를 제공할 때 네임스페이스를 비워둘 수 있습니다. 이 경우 작성기는 접두사를 무시합니다. 이는 Microsoft .NET Framework 버전 2.0 릴리스에서 변경된 동작입니다. 이전 버전에서는 이 경우 XmlException이 throw됩니다.

참고 항목

기타 리소스

XmlWriter를 사용하여 XML 작성