다음을 통해 공유


XML 문서에서 네임스페이스 관리

XML 네임스페이스는 XML 문서의 요소와 특성 이름을 사용자 지정 및 미리 정의된 URI와 연결합니다. 이러한 연결을 만들려면 네임스페이스 URI에 대한 접두사를 정의하고 이러한 접두사를 사용하여 XML 데이터의 요소 및 특성 이름을 한정합니다. 네임스페이스는 요소 및 특성 이름 충돌을 방지하고 동일한 이름의 요소와 특성을 다르게 처리하고 유효성을 검사할 수 있도록 합니다.

네임스페이스 선언

요소에서 네임스페이스를 선언하려면 다음 특성을 사용합니다 xmlns: .

xmlns:<name>=<"uri">

<name> 네임스페이스 접두사이며 <"uri"> 네임스페이스를 식별하는 URI입니다. 접두사를 선언한 후에는 이 접두사를 사용하여 XML 문서의 요소와 특성을 한정하고 네임스페이스 URI와 연결할 수 있습니다. 네임스페이스 접두사는 문서 전체에서 사용되므로 길이가 짧아야 합니다.

이 예제에서는 두 BOOK 요소를 정의합니다. 첫 번째 요소는 접두사 mybook로 한정되고, 두 번째 요소는 접두사 bb로 한정됩니다. 각 접두사는 다른 네임스페이스 URI와 연결됩니다.

<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">  
    <bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>

요소가 특정 네임스페이스의 일부임을 나타내려면 네임스페이스 접두사를 추가합니다. 예를 들어, Author 요소가 mybook 네임스페이스에 속하는 경우 <mybook:Author>로 선언됩니다.

선언 범위

네임스페이스는 선언 시점부터 선언된 요소의 끝까지 유효합니다. 이 예제에서는 BOOK 요소에 정의된 네임스페이스가 BOOK 요소 외부의 다른 요소, 예를 들어 Publisher 요소에는 적용되지 않습니다.

<Author>Joe Smith</Author>  
<BOOK xmlns:book="http://www.contoso.com">  
    <title>My Wonderful Day</title>  
      <price>$3.95</price>  
</BOOK>  
<Publisher>  
    <Name>MSPress</Name>  
</Publisher>  

네임스페이스를 사용하려면 먼저 선언해야 하지만 XML 문서의 맨 위에 표시할 필요는 없습니다.

XML 문서에서 여러 네임스페이스를 사용하는 경우 하나의 네임스페이스를 기본 네임스페이스로 정의하여 보다 깔끔한 문서를 만들 수 있습니다. 기본 네임스페이스는 루트 요소에 선언되며 문서의 모든 정규화되지 않은 요소에 적용됩니다. 기본 네임스페이스는 특성이 아닌 요소에만 적용됩니다.

기본 네임스페이스를 사용하려면 요소의 선언에서 접두사 및 콜론을 생략합니다.

<BOOK xmlns="http://www.contoso.com/books.dtd">  
...
</BOOK>

네임스페이스 관리

클래스는 XmlNamespaceManager 네임스페이스 URI 및 해당 접두사 컬렉션을 저장하고 이 컬렉션에서 네임스페이스를 조회, 추가 및 제거할 수 있습니다. 특정 컨텍스트에서는 XML 처리 성능을 향상시키려면 이 클래스가 필요합니다. 예를 들어 XsltContext 클래스는 XPath 지원을 위해 XmlNamespaceManager를 사용합니다.

네임스페이스 관리자는 네임스페이스에 대한 유효성 검사를 수행하지 않지만 접두사 및 네임스페이스가 이미 확인되었으며 W3C 네임스페이스 사양을 준수한다고 가정합니다.

비고

C#Visual Basic의 LINQ TO XML은 네임스페이스를 관리하는 데 사용되지 XmlNamespaceManager 않습니다. LINQ to XML을 사용할 때 네임스페이스 관리에 대한 자세한 내용은 LINQ 설명서에서 XML 네임스페이스 작업(C#) 및 XML 네임스페이스 작업(Visual Basic) 을 참조하세요.

다음은 클래스를 사용하여 수행할 수 있는 몇 가지 관리 및 조회 작업입니다 XmlNamespaceManager . 자세한 내용과 예제를 보려면 각 메서드 또는 속성에 대한 참조 페이지의 링크를 따르세요.

에게 사용하세요
네임스페이스 추가 AddNamespace 메서드
네임스페이스 제거 RemoveNamespace 메서드
기본 네임스페이스의 URI 찾기 DefaultNamespace 속성
네임스페이스 접두사에 대한 URI 찾기 LookupNamespace 메서드
네임스페이스 URI의 접두사 찾기 LookupPrefix 메서드
현재 노드에서 네임스페이스 목록 가져오기 GetNamespacesInScope 메서드
네임스페이스 범위 지정 PushScopePopScope 메서드
현재 범위에서 접두사를 정의했는지 확인합니다. HasNamespace 메서드
접두사 및 URI를 조회하는 데 사용되는 이름 테이블 가져오기 NameTable 속성

참고하십시오