Taal
Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een query uitvoeren op een
De query die u schrijft wanneer u een document laadt via XDocument.Load verschilt enigszins van wat u schrijft wanneer u laadt via XElement.Load.
Vergelijking van XDocument.Load en XElement.Load
Wanneer u een XML-document in een XElement via XElement.Load laadt, bevat het XElement aan de wortel van de XML-boomstructuur het hoofdelement van het geladen document. Wanneer u echter hetzelfde XML-document in een XDocument via XDocument.Load laadt, is de wortel van de boom een XDocument-knooppunt, en is het hoofdelement van het geladen document het enige toegestane onderliggende XElement-knooppunt van de XDocument. De LINQ naar XML-assen werken ten opzichte van het hoofdknooppunt.
Voorbeeld: Een XML-structuur laden met behulp van XElement.Loaden vervolgens een query uitvoeren op onderliggende elementen
In dit eerste voorbeeld wordt een XML-structuur geladen met behulp van Load. Vervolgens wordt er een query uitgevoerd op de kind elementen van de wortel van de structuur.
// Create a simple document and write it to a file
File.WriteAllText("Test.xml", @"<Root>
<Child1>1</Child1>
<Child2>2</Child2>
<Child3>3</Child3>
</Root>");
Console.WriteLine("Querying tree loaded with XElement.Load");
Console.WriteLine("----");
XElement doc = XElement.Load("Test.xml");
IEnumerable<XElement> childList =
from el in doc.Elements()
select el;
foreach (XElement e in childList)
Console.WriteLine(e);
' Create a simple document and write it to a file
File.WriteAllText("Test.xml", "<Root>" + Environment.NewLine + _
" <Child1>1</Child1>" + Environment.NewLine + _
" <Child2>2</Child2>" + Environment.NewLine + _
" <Child3>3</Child3>" + Environment.NewLine + _
"</Root>")
Console.WriteLine("Querying tree loaded with XElement.Load")
Console.WriteLine("----")
Dim doc As XElement = XElement.Load("Test.xml")
Dim childList As IEnumerable(Of XElement) = _
From el In doc.Elements() _
Select el
For Each e As XElement In childList
Console.WriteLine(e)
Next
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
Querying tree loaded with XElement.Load
----
<Child1>1</Child1>
<Child2>2</Child2>
<Child3>3</Child3>
Voorbeeld: Een XML-structuur laden met behulp van XDocument.Loaden vervolgens een query uitvoeren op onderliggende elementen
Het volgende voorbeeld doet hetzelfde als het bovenstaande voorbeeld, maar de XML-structuur is geladen in een XDocument, in plaats van een XElement.
// Create a simple document and write it to a file
File.WriteAllText("Test.xml", @"<Root>
<Child1>1</Child1>
<Child2>2</Child2>
<Child3>3</Child3>
</Root>");
Console.WriteLine("Querying tree loaded with XDocument.Load");
Console.WriteLine("----");
XDocument doc = XDocument.Load("Test.xml");
IEnumerable<XElement> childList =
from el in doc.Elements()
select el;
foreach (XElement e in childList)
Console.WriteLine(e);
' Create a simple document and write it to a file
File.WriteAllText("Test.xml", "<Root>" + Environment.NewLine + _
" <Child1>1</Child1>" + Environment.NewLine + _
" <Child2>2</Child2>" + Environment.NewLine + _
" <Child3>3</Child3>" + Environment.NewLine + _
"</Root>")
Console.WriteLine("Querying tree loaded with XDocument.Load")
Console.WriteLine("----")
Dim doc As XDocument = XDocument.Load("Test.xml")
Dim childList As IEnumerable(Of XElement) = _
From el In doc.Elements() _
Select el
For Each e As XElement In childList
Console.WriteLine(e)
Next
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
Querying tree loaded with XDocument.Load
----
<Root>
<Child1>1</Child1>
<Child2>2</Child2>
<Child3>3</Child3>
</Root>
U ziet dat dezelfde query het ene Root knooppunt heeft geretourneerd in plaats van de drie onderliggende knooppunten.
U kunt dit als volgt doen door de Root eigenschap te gebruiken voordat u toegang krijgt tot de assenmethoden:
// Create a simple document and write it to a file
File.WriteAllText("Test.xml", @"<Root>
<Child1>1</Child1>
<Child2>2</Child2>
<Child3>3</Child3>
</Root>");
Console.WriteLine("Querying tree loaded with XDocument.Load");
Console.WriteLine("----");
XDocument doc = XDocument.Load("Test.xml");
IEnumerable<XElement> childList =
from el in doc.Root.Elements()
select el;
foreach (XElement e in childList)
Console.WriteLine(e);
' Create a simple document and write it to a file
File.WriteAllText("Test.xml", "<Root>" + Environment.NewLine + _
" <Child1>1</Child1>" + Environment.NewLine + _
" <Child2>2</Child2>" + Environment.NewLine + _
" <Child3>3</Child3>" + Environment.NewLine + _
"</Root>")
Console.WriteLine("Querying tree loaded with XDocument.Load")
Console.WriteLine("----")
Dim doc As XDocument = XDocument.Load("Test.xml")
Dim childList As IEnumerable(Of XElement) = _
From el In doc.Root.Elements() _
Select el
For Each e As XElement In childList
Console.WriteLine(e)
Next
Deze query wordt nu op dezelfde manier uitgevoerd als de query op de boom die is geworteld in XElement.
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
Querying tree loaded with XDocument.Load
----
<Child1>1</Child1>
<Child2>2</Child2>
<Child3>3</Child3>