Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En av de viktigaste funktionerna i XML-literaler i Visual Basic är möjligheten att deklarera XML-namnområden med hjälp av -instruktionen Imports . Med den här funktionen kan du deklarera ett XML-namnområde som använder ett prefix eller deklarera ett XML-standardnamnområde.
Den här funktionen är användbar i två situationer:
- Namnområden som deklareras i XML-literaler överförs inte till inbäddade uttryck. Om du deklarerar globala namnområden minskar mängden arbete som krävs för att använda inbäddade uttryck med namnområden.
- Du måste deklarera globala namnområden för att kunna använda namnområden med XML-egenskaper.
Du kan deklarera globala namnområden på projektnivå. Du kan också deklarera globala namnområden på modulnivå, vilket åsidosätter globala namnområden på projektnivå. Slutligen kan du åsidosätta globala namnområden i en XML-literal.
När du använder XML-literaler eller XML-egenskaper som finns i globalt deklarerade namnområden kan du se det utökade namnet på XML-literaler eller egenskaper genom att hovra över dem i Visual Studio. Det utökade namnet visas i en knappbeskrivning.
Du kan hämta ett XNamespace objekt som motsvarar ett globalt namnområde med hjälp av GetXmlNamespace metoden .
Exempel: Använd Imports för att deklarera ett globalt namnområde
I följande exempel deklareras ett standard globalt namnområde med -instruktionen Imports och initierar sedan ett XElement objekt i namnområdet med en XML-literal:
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = <Root/>
Console.WriteLine(root)
End Sub
End Module
Det här exemplet genererar följande utdata:
<Root xmlns="http://www.adventure-works.com" />
Exempel: Deklarera ett globalt namnområde som har ett prefix
Nästa exempel deklarerar ett globalt namnområde med ett prefix och initierar ett element med en XML-literal:
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = <aw:Root/>
Console.WriteLine(root)
End Sub
End Module
Det här exemplet genererar följande utdata:
<aw:Root xmlns:aw="http://www.adventure-works.com" />
Exempel: Deklarera ett standardnamnområde och använd ett inbäddat uttryck för elementet Child
Namnområden som deklareras i XML-literaler överförs inte till inbäddade uttryck. I följande exempel deklareras ett standardnamnområde och sedan används ett inbäddat uttryck för elementet Child .
Dim root As XElement = _
<Root xmlns="http://www.adventure-works.com">
<%= <Child/> %>
</Root>
Console.WriteLine(root)
Det här exemplet genererar följande utdata:
<Root xmlns="http://www.adventure-works.com">
<Child xmlns="" />
</Root>
Den resulterande XML-koden innehåller en deklaration av ett standardnamnområde så att elementet Child inte finns i något namnområde.
Du kan deklarera ett annat namnområde i det inbäddade uttrycket enligt följande:
Dim root As XElement = _
<Root xmlns="http://www.adventure-works.com">
<%= <Child xmlns="http://www.adventure-works.com"/> %>
</Root>
Console.WriteLine(root)
Det här exemplet genererar följande utdata:
<Root xmlns="http://www.adventure-works.com">
<Child xmlns="http://www.adventure-works.com" />
</Root>
Med det globala standardnamnområdet kan du dock använda XML-literaler utan att deklarera namnområden. Den resulterande XML-koden kommer att finnas i det globalt deklarerade standardnamnområdet, som i det här exemplet:
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = <Root>
<%= <Child/> %>
</Root>
Console.WriteLine(root)
End Sub
End Module
Det här exemplet genererar följande utdata:
<Root xmlns="http://www.adventure-works.com">
<Child />
</Root>
Exempel: Använda namnområden med XML-egenskaper
Om du arbetar med ett XML-träd som finns i ett namnområde och du använder XML-egenskaper måste du använda ett globalt namnområde så att XML-egenskaperna också finns i rätt namnområde. I följande exempel deklareras ett XML-träd i ett namnområde och sedan skrivs antalet Child element ut.
Dim root As XElement = _
<Root xmlns="http://www.adventure-works.com">
<Child>content</Child>
</Root>
Console.WriteLine(root.<Child>.Count())
Det här exemplet anger att det inte finns några Child element. Den genererar följande utdata:
0
Om du däremot deklarerar ett globalt standardnamnområde finns både XML-literalen och XML-egenskapen i det globala standardnamnområdet:
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = _
<Root>
<Child>content</Child>
</Root>
Console.WriteLine(root.<Child>.Count())
End Sub
End Module
Det här exemplet anger att det finns ett Child element. Den genererar följande utdata:
1
Om du deklarerar ett globalt namnområde som har ett prefix kan du använda prefixet för både XML-literaler och XML-egenskaper:
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = _
<aw:Root>
<aw:Child>content</aw:Child>
</aw:Root>
Console.WriteLine(root.<aw:Child>.Count())
End Sub
End Module
Exempel: Använd GetXmlNamespace för att hämta en XNamespace
Du kan erhålla ett XNamespace objekt genom att använda GetXmlNamespace metoden:
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = <aw:Root/>
Dim xn As XNamespace = GetXmlNamespace(aw)
Console.WriteLine(xn)
End Sub
End Module
Det här exemplet genererar följande utdata:
http://www.adventure-works.com
Se även
- översikt över namnområden