XmlNamespaceManager에서 얻는 정보
업데이트: November 2007
다음 표에서는 XmlNamespaceManager에 정보가 추가된 경우 정보를 설정하거나 검색하는 작업을 수행하는 데 사용할 수 있는 여러 가지 메서드 및 속성을 보여 줍니다.
작업 |
메서드 또는 속성 |
---|---|
기본 네임스페이스로 정의된 namespaceURI를 찾습니다. |
|
접두사에 대해 선언되고 해당 접두사의 영역에 있는 namespaceURI를 찾습니다. |
|
namespaceURI에 대해 선언되고 해당 영역에 있는 접두사를 찾습니다. |
|
XmlNamespaceManager에 네임스페이스를 추가합니다. |
|
XmlNamespaceManager에서 네임스페이스를 제거합니다. |
|
네임스페이스 영역을 설정합니다. |
|
접두사가 현재 영역에서 정의되어 있는지 확인합니다. |
|
XmlNamespaceManager 개체와 연관된 XmlNameTable을 가져옵니다. |
다음 예제에서는 특성을 작성할 때 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 메서드를 사용하여 네임스페이스를 추가하고, PushScope 및 PopScope 메서드를 사용하여 해당 네임스페이스를 특정 범위로 지정하는 방법을 보여 줍니다.
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