2010-07-27 5 views
2

LINQ 쿼리를 실행할 때 for 루프에서 아무 것도 반환하지 않는 XML 파일이 있습니다.Linq to XML - 쿼리는 아무것도 반환하지 않습니다.

<?xml version="1.0" encoding="utf-8"?> 
<ReadOrderResponseType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<Status xmlns="urn:mysite:apis">Success</Status> 
<TimeStamp xmlns="urn:mysite:apis">2010-07-25T15:26:49.1150235Z</TimeStamp> 
<StoreUrl xmlns="urn:mysite:apis">http://XYZ.COM</StoreUrl> 
<PageResponse xmlns="urn:mysite:apis"> 
    <Page>1</Page> 
    <Size>10</Size> 
    <TotalSize>18033</TotalSize> 
    <HasMore>true</HasMore> 
</PageResponse> 
<OrderList OrderId="20147184" OrderNumber="20100560" xmlns="urn:mysite:apis"> 
    <Archived>false</Archived> 
    <CreateDate>2010-07-25T01:37:04.067Z</CreateDate> 
</OrderList> 
</ReadOrderResponseType> 

VB.NET :

Dim document As XDocument = XDocument.Parse(myOrders.xml) 
       Dim query = From O In document.Root.Elements("OrderList") _ 
       Select New With _ 
       { _ 
        .Archived= O.Element("Archived").Value, _ 
        .Status = O.Element("CreateDate").Value _ 
       } 

       For Each Order In query 
        Console.WriteLine(Order.Archived) 
        Console.ReadLine() 
       Next 

그것도 루프의 내부에서 이동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

나머지는 우리가 볼 수 있도록 게시물을 편집하고 XML을 이스케이프 처리해야합니다. 내 첫 번째 추측은 XML에 네임 스페이스가 있다는 것입니다.하지만 잘 포맷하지 않으면 많은 도움을 얻지 못할 것입니다. – mattmc3

답변

1

네임 스페이스 한정자가 필요합니다. 다음과 같이 시도하십시오 :

Dim document As XDocument = XDocument.Load("XMLFile1.xml") 
    Dim apins As XNamespace = "urn:mysite:apis" 
    Dim query = From O In document.Root.Elements(apins + "OrderList") _ 
    Select New With _ 
    { _ 
     .Archived = O.Element(apins + "Archived").Value, _ 
     .Status = O.Element(apins + "CreateDate").Value _ 
    } 

    For Each Order In query 
     Console.WriteLine(Order.Archived) 
     Console.ReadLine() 
    Next