네임스페이스 접두사를 제어하는 방법(LINQ to XML)

이 문서에서는 C# 및 Visual Basic에서 XML 트리를 직렬화할 때 네임스페이스 접두사를 제어하는 방법을 설명합니다.

대부분의 경우에는 네임스페이스 접두사를 제어할 필요가 없습니다. 그러나 특정 XML 프로그래밍 도구에서는 이를 필요로 합니다. 예를 들어, XSLT 스타일시트나 특정 네임스페이스 접두사를 참조하는 포함된 XPath 식이 포함된 XAML 문서를 조작할 수 있습니다. 이러한 경우 해당 접두사를 사용하여 문서를 직렬화해야 합니다. 이는 네임스페이스 접두사를 제어해야 하는 일반적인 경우입니다.

또 다른 이유는 사용자가 XML 문서를 수동으로 편집할 수 있도록 하고 사용자가 입력하기 편리한 네임스페이스 접두사를 만들려고 하기 때문입니다. 예를 들어, XSD 문서를 생성할 수 있습니다. 스키마 규칙에서는 스키마 네임스페이스의 접두사로 xs 또는 xsd를 사용하도록 제안합니다.

네임스페이스 접두사를 제어하려면 네임스페이스를 선언하는 특성을 삽입합니다. 특정 접두사가 있는 네임스페이스를 선언하면 LINQ to XML은 직렬화할 때 네임스페이스 접두사를 적용하려고 시도합니다.

접두사가 포함된 네임스페이스를 선언하는 특성을 만들려면 특성 이름의 네임스페이스가 Xmlns이고 특성의 이름이 네임스페이스 접두사인 특성을 만듭니다. 특성 값은 네임스페이스의 URI입니다.

예: 접두사가 있는 두 개의 네임스페이스 만들기

이 예제에서는 두 네임스페이스를 선언한 다음 이는 http://www.adventure-works.com 네임스페이스에 접두사 aw를 지정하고, www.fourthcoffee.com 네임스페이스에 접두사 fc를 지정합니다.

XNamespace aw = "http://www.adventure-works.com";
XNamespace fc = "www.fourthcoffee.com";
XElement root = new XElement(aw + "Root",
    new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
    new XAttribute(XNamespace.Xmlns + "fc", "www.fourthcoffee.com"),
    new XElement(fc + "Child",
        new XElement(aw + "DifferentChild", "other content")
    ),
    new XElement(aw + "Child2", "c2 content"),
    new XElement(fc + "Child3", "c3 content")
);
Console.WriteLine(root);
Imports <xmlns:aw="http://www.adventure-works.com">
Imports <xmlns:fc="www.fourthcoffee.com">

Module Module1

    Sub Main()
        Dim root As XElement = _
            <aw:Root>
                <fc:Child>
                    <aw:DifferentChild>other content</aw:DifferentChild>
                </fc:Child>
                <aw:Child2>c2 content</aw:Child2>
                <fc:Child3>c3 content</fc:Child3>
            </aw:Root>
        Console.WriteLine(root)
    End Sub

This example produces the following output:

```xml
<aw:Root xmlns:aw="http://www.adventure-works.com" xmlns:fc="www.fourthcoffee.com">
  <fc:Child>
    <aw:DifferentChild>other content</aw:DifferentChild>
  </fc:Child>
  <aw:Child2>c2 content</aw:Child2>
  <fc:Child3>c3 content</fc:Child3>
</aw:Root>

참고 항목