Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az XML-fa alapértelmezett névterei nem tartoznak a lekérdezések hatókörébe. Ha egy alapértelmezett névtérben lévő XML-fájllal rendelkezik, a névteret a helyi névvel kell kombinálnia, hogy a lekérdezésben használandó minősített név legyen.
Az alapértelmezett névtérrel rendelkező XML-fa lekérdezésének gyakori hibája, hogy úgy írja le a lekérdezést, mintha az XML nem egy névtérben lenne. Az első példa egy alapértelmezett névtér tipikus helytelen lekérdezését mutatja be. A második egy megfelelő lekérdezést jelenít meg.
Példa: Xml helytelen lekérdezése névtérben
Ez a példa egy névtérben lévő XML létrehozását és egy üres eredményhalmazt visszaadó helytelen lekérdezést mutat be.
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("Child")
select el;
Console.WriteLine("Result set follows:");
foreach (XElement el in c1)
Console.WriteLine((int)el);
Console.WriteLine("End of result set");
Module Module1
Sub Main()
Dim root As XElement = _
<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>
Dim c1 As IEnumerable(Of XElement) = _
From el In root.<Child> _
Select el
Console.WriteLine("Result set follows:")
For Each el As XElement In c1
Console.WriteLine(CInt(el))
Next
Console.WriteLine("End of result set")
End Sub
End Module
Ez a példa a következő kimenetet hozza létre:
Result set follows:
End of result set
Példa: Az XML megfelelő lekérdezése egy névtérben
Ez a példa az XML névtérben való létrehozását és egy megfelelő lekérdezést mutatja be.
A C#-ban a helyes módszer egy XNamespace objektum deklarálása és inicializálása, valamint az objektumok megadásakor XName való használata. Ebben az esetben a Elements metódus argumentuma egy XName objektum.
A Visual Basic használatakor a megfelelő módszer egy globális alapértelmezett névtér deklarálása és inicializálása. Ez az összes XML-tulajdonságot az alapértelmezett névtérbe helyezi.
A kód itt látható:
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>");
XNamespace aw = "http://www.adventure-works.com";
IEnumerable<XElement> c1 =
from el in root.Elements(aw + "Child")
select el;
Console.WriteLine("Result set follows:");
foreach (XElement el in c1)
Console.WriteLine((int)el);
Console.WriteLine("End of result set");
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = _
<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>
Dim c1 As IEnumerable(Of XElement) = _
From el In root.<Child> _
Select el
Console.WriteLine("Result set follows:")
For Each el As XElement In c1
Console.WriteLine(el.Value)
Next
Console.WriteLine("End of result set")
End Sub
End Module
Ez a példa a következő kimenetet hozza létre:
Result set follows:
1
2
3
End of result set