다음을 통해 공유


XmlNamespaceManager에서 얻는 정보

업데이트: November 2007

다음 표에서는 XmlNamespaceManager에 정보가 추가된 경우 정보를 설정하거나 검색하는 작업을 수행하는 데 사용할 수 있는 여러 가지 메서드 및 속성을 보여 줍니다.

작업

메서드 또는 속성

기본 네임스페이스로 정의된 namespaceURI를 찾습니다.

DefaultNamespace 속성

접두사에 대해 선언되고 해당 접두사의 영역에 있는 namespaceURI를 찾습니다.

LookupNamespace 메서드

namespaceURI에 대해 선언되고 해당 영역에 있는 접두사를 찾습니다.

LookupPrefix 메서드

XmlNamespaceManager에 네임스페이스를 추가합니다.

AddNamespace 메서드

XmlNamespaceManager에서 네임스페이스를 제거합니다.

RemoveNamespace 메서드

네임스페이스 영역을 설정합니다.

PushScope 메서드, PopScope 메서드

접두사가 현재 영역에서 정의되어 있는지 확인합니다.

HasNamespace 메서드

XmlNamespaceManager 개체와 연관된 XmlNameTable을 가져옵니다.

NameTable 속성

다음 예제에서는 특성을 작성할 때 LookupPrefix 메서드가 어떻게 사용되는지 보여 줍니다. WriteStartAttribute 메서드를 사용하여 특성을 시작하고 LookupPrefix를 사용하여 urn:samples namespaceURI에 대한 접두사를 찾은 다음 ISBN 특성을 작성할 때 WriteStartAttribute의 해당 접두사를 사용합니다.

Dim prefix As String = nsMgr.LookupPrefix("urn:samples")
writer.WriteStartAttribute(prefix, "ISBN", "urn:samples")
XmlNameTable nt = new XmlNameTable();
XmlNamespaceManager nsMgr = new XmlNamespaceManager(nt);
nsMgr.AddNamespace("bk","urn:samples");string prefix = writer nsMgr.LookupPrefix("urn:samples");
writer.WriteStartAttribute(prefix, "ISBN", "urn:samples");

다음 예제에서는 LookupPrefix를 사용하여 요소에 대해 정의된 접두사를 찾습니다.

writer.WriteStartElement("root", "book")
writer.WriteStartElement("x", "node", "author")
s = writer.LookupPrefix("author")
CError.Compare(s, "x", "Error in nested element")
writer.WriteEndElement()
s = writer.LookupPrefix("book")
CError.Compare(s, Nothing, "Error in root element")
writer.WriteEndElement()
writer.WriteStartElement("root", "book");
writer.WriteStartElement("x", "node", "author");
s = writer.LookupPrefix("author");
CError.Compare(s, "x", "Error in nested element");
writer.WriteEndElement();
s = writer.LookupPrefix("book");
CError.Compare(s, null, "Error in root element");
writer.WriteEndElement();

출력

<root xmlns="book">
  <x:node xmlns:x="author" /> 
</root>

다음 예제에서는 AddNamespace 메서드를 사용하여 네임스페이스를 추가하고, PushScopePopScope 메서드를 사용하여 해당 네임스페이스를 특정 범위로 지정하는 방법을 보여 줍니다.

Public Sub Main()
        Dim nametable As NameTable = New NameTable()
        Dim nsm As XmlNamespaceManager = New XmlNamespaceManager(nametable)
        ' Add a default namespace.
        nsm.AddNamespace(String.Empty, "www.microsoft.com")
        nsm.AddNamespace("msbooks", "www.microsoft.com/books")
        'Push the namespace scope on the stack.
        nsm.PushScope()
        nsm.AddNamespace("msstore", "www.microsoft.com/store")
        checkns(nsm)
        nsm.PopScope()
        checkns(nsm)

        Dim response As String = Console.ReadLine

End Sub

Public Sub checkns(ByVal nsm As XmlNamespaceManager)
        If nsm.HasNamespace(String.Empty) Then
            Console.WriteLine("DefaultNamespace in scope")
        Else
            Console.WriteLine("DefaultNamespace not in scope")
        End If
        If nsm.HasNamespace("msstore") Then
            Console.WriteLine("www.microsoft.com/store"" in scope")
        Else
            Console.WriteLine("www.microsoft.com/store not in scope")
        End If
        If nsm.HasNamespace("msbooks") Then
            Console.WriteLine("www.microsoft.com/books in scope")
        Else
            Console.WriteLine("www.microsoft.com/books not in scope")
        End If
End Sub
 
XmlNameTable nt = new XmlNameTable();
XmlNamespaceManager nsmanager = new XmlNamespaceManager(nt);
//Add a default namespace.
nsmanager.AddNamespace (String.Empty, "www.microsoft.com"); 
nsmanager.AddNamespace ("msbooks", "www.microsoft.com/books");
nsmanager.PushScope();
nsmanager.AddNamespace ("msstore", "www.microsoft.com/store");
checkns(nsmanager);
nsmanager.PopScope();
checkns(nsmanager);

checkns(XmlNamespaceManager nsm)
{
    if (nsm.HasNamespace(String.Empty))
        Console.WriteLine("DefaultNamespace in scope");
    else
        Console.WriteLine("DefaultNamespace not in scope");
    if (nsm.HasNamespace("msstore"))
        Console.WriteLine(""www.microsoft.com/store"" in scope");
    else
        Console.WriteLine(""www.microsoft.com/store"" not in scope");
    if (nsm.HasNamespace("msbooks"))
        Console.WriteLine(""www.microsoft.com/books"" in scope");
    else
        Console.WriteLine(""www.microsoft.com/books"" not in scope");
}

출력

DefaultNamespace not in scope
www.microsoft.com/store" in scope
www.microsoft.com/books not in scope
DefaultNamespace in scope
www.microsoft.com/store not in scope
www.microsoft.com/books in scope

다음 예제에서는 현재 범위의 모든 접두사를 열거하고 세 개의 네임스페이스 및 접두사 쌍도 추가로 나열합니다. 이러한 세 개의 기본 네임스페이스 및 접두사 쌍은 네임스페이스 관리자를 만들 때 자동으로 추가됩니다.

Dim nametable As NameTable = New NameTable()
Dim nsm As XmlNamespaceManager = New XmlNamespaceManager(nametable)
'Add a default namespace.
nsm.AddNamespace("xmlabc", "www.microsoft.com")
Dim prefix As String
For Each prefix In nsm
    Console.WriteLine("Namespace:{0}, Prefix:{1}", nsm.LookupNamespace(nsm.NameTable.Get(prefix)), prefix)
Next
NameTable nametable = new NameTable();
XmlNamespaceManager nsm = new XmlNamespaceManager(nametable);
//Add a default namespace.
nsm.AddNamespace("xmlabc", "www.microsoft.com"); 
foreach (String prefix in nsm)
    {
        Console.WriteLine("Namespace:{0}, Prefix:{1}",nsm.LookupNamespace(nsm.NameTable.Get(prefix)), prefix);
    }

출력

Namespace:http://www.w3.org/XML/1998/namespace, Prefix:xml
Namespace:http://www.w3.org/2000/xmlns/, Prefix:xmlns 
Namespace:, Prefix: 
Namespace:www.microsoft.com, Prefix:xmlabc

참고 항목

개념

XML 문서의 네임스페이스

네임스페이스 선언

기본 네임스페이스

네임스페이스 선언 범위

XmlNamespaceManager를 사용하여 네임스페이스 관리