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.
Om du vill skriva en fråga i XML som finns i ett namnområde måste du använda XName objekt som har rätt namnrymd.
För C#är den vanligaste metoden att initiera en XNamespace med hjälp av en sträng som innehåller URI:n och sedan använda additionsoperatorns överlagring för att kombinera namnområdet med det lokala namnet.
För Visual Basic är den vanligaste metoden att definiera ett globalt namnområde och sedan använda XML-literaler och XML-egenskaper som använder det globala namnområdet. Du kan definiera ett globalt standardnamnområde, i vilket fall element i XML-literalerna kommer att finnas i namnområdet som standard. Du kan också definiera ett globalt namnområde med ett prefix och sedan använda prefixet som krävs i XML-literalerna och i XML-egenskaperna. Precis som med andra former av XML finns attributen alltid i inget namnområde som standard.
Det första exemplet i den här artikeln visar hur du skapar ett XML-träd i ett standardnamnområde. Den andra visar hur du skapar ett XML-träd i ett namnområde med ett prefix.
Exempel: Skapa ett träd i ett standardnamnområde och hämta element
I följande exempel skapas ett XML-träd som finns i ett standardnamnområde och hämtar sedan en samling element.
XNamespace aw = "http://www.adventure-works.com";
XElement root = XElement.Parse(
@"<Root xmlns='http://www.adventure-works.com'>
<Child>1</Child>
<Child>2</Child>
<Child>3</Child>
<AnotherChild>4</AnotherChild>
<AnotherChild>5</AnotherChild>
<AnotherChild>6</AnotherChild>
</Root>");
IEnumerable<XElement> c1 =
from el in root.Elements(aw + "Child")
select el;
foreach (XElement el in c1)
Console.WriteLine((int)el);
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = _
<Root>
<Child>1</Child>
<Child>2</Child>
<Child>3</Child>
<AnotherChild>4</AnotherChild>
<AnotherChild>5</AnotherChild>
<AnotherChild>6</AnotherChild>
</Root>
Dim c1 As IEnumerable(Of XElement) = _
From el In root.<Child> _
Select el
For Each el As XElement In c1
Console.WriteLine(el.Value)
Next
End Sub
End Module
Det här exemplet genererar följande utdata:
1
2
3
Exempel: Skapa ett träd i ett namnområde med ett prefix och hämta element
I C# skriver du frågor på samma sätt oavsett om du skriver frågor i ett XML-träd som använder ett namnområde med ett prefix eller i ett XML-träd med ett standardnamnområde.
I följande exempel skapas ett XML-träd som finns i ett namnområde med ett prefix och hämtar sedan en samling element.
XNamespace aw = "http://www.adventure-works.com";
XElement root = XElement.Parse(
@"<aw:Root xmlns:aw='http://www.adventure-works.com'>
<aw:Child>1</aw:Child>
<aw:Child>2</aw:Child>
<aw:Child>3</aw:Child>
<aw:AnotherChild>4</aw:AnotherChild>
<aw:AnotherChild>5</aw:AnotherChild>
<aw:AnotherChild>6</aw:AnotherChild>
</aw:Root>");
IEnumerable<XElement> c1 =
from el in root.Elements(aw + "Child")
select el;
foreach (XElement el in c1)
Console.WriteLine((int)el);
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = _
<aw:Root>
<aw:Child>1</aw:Child>
<aw:Child>2</aw:Child>
<aw:Child>3</aw:Child>
<aw:AnotherChild>4</aw:AnotherChild>
<aw:AnotherChild>5</aw:AnotherChild>
<aw:AnotherChild>6</aw:AnotherChild>
</aw:Root>
Dim c1 As IEnumerable(Of XElement) = _
From el In root.<aw:Child> _
Select el
For Each el As XElement In c1
Console.WriteLine(CInt(el))
Next
End Sub
End Module
Det här exemplet genererar följande utdata:
1
2
3