Sdílet prostřednictvím


Jak řídit předpony názvového prostoru (LINQ to XML)

Tento článek popisuje, jak řídit předpony oboru názvů při serializaci stromu XML v jazyce C# a Visual Basic.

V mnoha situacích není nutné řídit předpony oboru názvů. Některé programovací nástroje XML však vyžadují. Můžete například manipulovat se šablonou stylů XSLT nebo dokumentEM XAML, který obsahuje vložené výrazy XPath, které odkazují na konkrétní předpony oboru názvů. V takovém případě je důležité, aby byl dokument serializován s těmito předponami. Toto je běžný důvod řízení předpon oboru názvů.

Dalším důvodem je, že chcete, aby uživatelé dokument XML upravili ručně a chcete vytvořit předpony oboru názvů, které jsou vhodné pro uživatele k psaní. Můžete například generovat dokument XSD. Konvence pro schémata naznačují, že použijete buď xs nebo xsd jako předponu oboru názvů schématu.

Chcete-li řídit předpony oboru názvů, vložíte atributy, které deklarují obory názvů. Pokud deklarujete obory názvů s konkrétními předponami, pokusí se LINQ to XML při serializaci respektovat předpony oboru názvů.

Chcete-li vytvořit atribut, který deklaruje obor názvů s předponou, vytvoříte atribut, ve kterém je Xmlnsobor názvů názvu atributu a název atributu je předpona oboru názvů. Hodnota atributu je identifikátor URI oboru názvů.

Příklad: Vytvoření dvou oborů názvů s předponami

Tento příklad deklaruje dva obory názvů. Určuje předponu http://www.adventure-works.com oboru názvů a předponu www.fourthcoffee.comawfc oboru názvů.

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>

Viz také