Hantera namnområden i ett XML-dokument
XML-namnområden associerar element- och attributnamn i ett XML-dokument med anpassade och fördefinierade URI:er. Om du vill skapa dessa associationer definierar du prefix för namnområdes-URI:er och använder dessa prefix för att kvalificera element- och attributnamn i XML-data. Namnrymder förhindrar kollisioner mellan element och attributnamn och gör att element och attribut med samma namn kan hanteras och valideras på olika sätt.
Deklarera namnområden
Om du vill deklarera ett namnområde för ett element använder du attributet xmlns:
:
xmlns:<name>=<"uri">
där <name>
är namnområdesprefixet och <"uri">
är den URI som identifierar namnområdet. När du har deklarerat prefixet kan du använda det för att kvalificera element och attribut i ett XML-dokument och associera dem med namnområdes-URI:n. Eftersom namnområdesprefixet används i ett dokument bör det vara kort.
Det här exemplet definierar två BOOK
element. Det första elementet kvalificeras av prefixet , mybook
och det andra elementet kvalificeras av prefixet . bb
Varje prefix är associerat med en annan namnområdes-URI:
<mybook:BOOK xmlns:mybook="http://www.contoso.com/books.dtd">
<bb:BOOK xmlns:bb="urn:blueyonderairlines" />
</mybook:BOOK>
Om du vill ange att ett element är en del av ett visst namnområde lägger du till namnområdesprefixet i det. Om ett Author
element till exempel tillhör mybook
namnområdet deklareras det som <mybook:Author>
.
Deklarationsomfång
Ett namnområde gäller från dess deklarationspunkt till slutet av elementet som det deklarerades i. I det här exemplet gäller inte namnområdet som definierats i elementet BOOK
för element utanför elementet BOOK
, till exempel elementet 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>
Ett namnområde måste deklareras innan det kan användas, men det behöver inte visas överst i XML-dokumentet.
När du använder flera namnområden i ett XML-dokument kan du definiera ett namnområde som standardnamnområde för att skapa ett renare dokument. Standardnamnområdet deklareras i rotelementet och gäller för alla okvalificerade element i dokumentet. Standardnamnområden gäller endast för element, inte för attribut.
Om du vill använda standardnamnområdet utelämnar du prefixet och kolonet från deklarationen på elementet:
<BOOK xmlns="http://www.contoso.com/books.dtd">
...
</BOOK>
Hantera namnområden
Klassen XmlNamespaceManager lagrar en samling namnområdes-URI:er och deras prefix och låter dig leta upp, lägga till och ta bort namnområden från den här samlingen. I vissa sammanhang krävs den här klassen för bättre XML-bearbetningsprestanda. Klassen XsltContext använder XmlNamespaceManager till exempel för XPath-stöd.
Namnområdeshanteraren utför ingen validering på namnrymderna, men förutsätter att prefix och namnområden redan har verifierats och överensstämmer med specifikationen för W3C-namnområden .
Kommentar
LINQ TILL XML i C# och Visual Basic använder XmlNamespaceManager inte för att hantera namnområden. Se Arbeta med XML-namnområden (C#) och Arbeta med XML-namnområden (Visual Basic) i LINQ-dokumentationen för information om hur du hanterar namnområden när du använder LINQ till XML.
Här är några av de hanterings- och uppslagsuppgifter som du kan utföra med XmlNamespaceManager klassen. Mer information och exempel finns i länkarna till referenssidan för varje metod eller egenskap.
To | Använd |
---|---|
Lägga till ett namnområde | AddNamespace Metod |
Ta bort ett namnområde | RemoveNamespace Metod |
Hitta URI:n för standardnamnområdet | DefaultNamespace Egenskapen |
Hitta URI:n för ett namnområdesprefix | LookupNamespace Metod |
Hitta prefixet för en namnområdes-URI | LookupPrefix Metod |
Hämta en lista över namnområden i den aktuella noden | GetNamespacesInScope Metod |
Omfång för ett namnområde | PushScope och PopScope metoder |
Kontrollera om ett prefix har definierats i det aktuella omfånget | HasNamespace Metod |
Hämta den namntabell som används för att söka efter prefix och URI:er | NameTable Egenskapen |