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.
Anmärkning
Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.
Den här klassen representerar XML-konstruktionen av namnområden.
Varje XName innehåller en XNamespace. Även om ett element inte finns i ett namnområde innehåller elementet XName fortfarande ett namnområde, XNamespace.None. Egenskapen XName.Namespace är garanterad att inte vara null.
Skapa ett XNamespace-objekt
Det vanligaste sättet att skapa ett XNamespace objekt är att helt enkelt tilldela en sträng till det. Du kan sedan kombinera namnområdet med ett lokalt namn med hjälp av åsidosättningen av additionsoperatorn. I följande exempel visas det här formspråket:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root", "Content");
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", "Content")
Console.WriteLine(root)
Men i Visual Basic deklarerar du vanligtvis ett globalt standardnamnområde enligt följande:
Imports <xmlns='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<Root>Content</Root>
Console.WriteLine(root)
End Sub
End Module
Det här exemplet genererar följande utdata:
<Root xmlns="http://www.adventure-works.com">Content</Root>
När du tilldelar en sträng till en XNamespace används den implicita konverteringen från String.
Mer information och exempel finns i Skapa ett dokument med namnområden i C# (LINQ till XML).
Mer information om hur du använder namnområden i Visual Basic finns i Arbeta med XML-namnområden .
Kontrollera namnområdesprefix
Om du skapar ett attribut som deklarerar ett namnområde sparas prefixet som anges i attributet i den serialiserade XML-koden. Om du vill skapa ett attribut som deklarerar ett namnområde med ett prefix skapar du ett attribut där namnområdet för attributets namn är Xmlnsoch namnet på attributet är namnområdesprefixet. Värdet för attributet är URI för namnområdet. I följande exempel visas det här formspråket:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
"Content");
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", _
New XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"), _
"Content")
Console.WriteLine(root)
I Visual Basic använder du vanligtvis en global namnområdesdeklaration i stället för att skapa en namnområdesnod för att styra namnområdesprefix:
Imports <xmlns:aw='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<aw:Root>Content</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">Content</aw:Root>
Mer information finns i Så här kontrollerar du namnområdesprefix.
Skapa ett standardnamnområde
När du skapar ett attribut som ska vara ett namnområde, om attributnamnet har specialvärdet "xmlns", deklareras namnområdet som standardnamnområde när XML-trädet serialiseras. Det särskilda attributet med namnet på själva "xmlns" finns inte i något namnområde. Värdet för attributet är namnområdes-URI:n.
I följande exempel skapas ett XML-träd som innehåller ett attribut som deklareras på ett sådant sätt att namnområdet blir standardnamnområdet:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
new XAttribute("xmlns", "http://www.adventure-works.com"),
new XElement(aw + "Child", "content")
);
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", _
New XAttribute("xmlns", "http://www.adventure-works.com"), _
New XElement(aw + "Child", "content") _
)
Console.WriteLine(root)
I Visual Basic använder du vanligtvis en global standarddeklaration för namnområde i stället för att skapa en namnområdesnod för att skapa ett standardnamnområde:
Imports <xmlns='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<Root>
<Child>content</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>content</Child>
</Root>
XNamespace-atomisering
XNamespace objekt är garanterade att atomiseras; Om två XNamespace objekt har exakt samma URI delar de alltså samma instans. Likhets- och jämförelseoperatorerna tillhandahålls uttryckligen för detta ändamål.
Använda expanderade namn
Ett annat sätt att ange ett namnområde och ett lokalt namn är att använda ett expanderat namn i formuläret {namespace}name:
XElement e = new XElement("{http://www.adventure-works.com}Root",
new XAttribute("{http://www.adventure-works.com}Att", "content")
);
Console.WriteLine(e);
Dim e As XElement = New XElement("{http://www.adventure-works.com}Root", _
New XAttribute("{http://www.adventure-works.com}Att", "content") _
)
Console.WriteLine(e)
Det här exemplet genererar följande utdata:
<Root p1:Att="content" xmlns:p1="http://www.adventure-works.com" xmlns="http://www.adventure-works.com" />
Den här metoden har prestandakonsekvenser. Varje gång du skickar en sträng som innehåller ett expanderat namn till LINQ till XML måste den parsa namnet, hitta det atomiserade namnområdet och hitta det atomiserade namnet. Den här processen tar cpu-tid. Om prestanda är viktigt kanske du vill använda en annan metod.
Med Visual Basic är den rekommenderade metoden att använda XML-literaler, vilket inte omfattar användning av utökade namn.