Anteckning
Å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.
Ett av de vanligaste problemen vid frågor mot XML-träd är att om XML-trädet har ett standardnamnområde skriver utvecklaren ibland frågan som om XML inte fanns i ett namnområde.
Den första uppsättningen exempel i den här artikeln visar ett typiskt sätt att XML i ett standardnamnområde läses in och sedan efterfrågas felaktigt.
Den andra uppsättningen exempel visar nödvändiga korrigeringar så att du kan fråga XML i ett namnområde.
Mer information finns i Översikt över namnområden.
Exempel: En felaktig fråga i XML i ett namnområde
Det här exemplet visar skapandet av XML i ett namnområde och en fråga som returnerar en tom resultatuppsättning.
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");
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")
Exemplet ger följande resultat:
Result set follows:
End of result set
Exempel: En korrekt fråga om XML i ett namnområde
Det här exemplet visar skapandet av XML i ett namnområde och en fråga som är korrekt kodad.
Lösningen är att deklarera och initiera ett XNamespace objekt och använda det när du XName anger objekt. I det här fallet är argumentet till Elements metoden ett XName objekt.
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(CInt(el))
Next
Console.WriteLine("End of result set")
End Sub
End Module
Exemplet ger följande resultat:
Result set follows:
1
2
3
End of result set