2012-05-17 4 views
0

아래와 같이 XML 서비스 TruckName 및 웹 사이트를 null로 호출하면 어떻게됩니까? 분명히 요소들은 웹 페이지의 XML에 삽입되어 있습니다 (아래 xml 참조). 나는 ArrayOf 요소와 관련 있다고 생각한다. 아래 코드는 내 콘솔 앱에서 GetInfo() 메서드를 호출하는 코드입니다. ArrayOfFoodTruck 요소를 제거해야합니까? 그렇다면 가장 쉬운 방법은 무엇입니까? 이건 내 콘솔 응용 프로그램에서 호출입니다URI에서 REST WCF 서비스 - ArrayOf - Null 요소

- <ArrayOfFoodTruck xmlns="http://schemas.datacontract.org/2004/07/WCFServiceLibrary" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
- <FoodTruck> 
<Company i:nil="true" /> 
<DayOfWeek i:nil="true" /> 
<Location i:nil="true" /> 
<TimeOfDay i:nil="true" /> 
<TruckID>0</TruckID> 
<TruckName>Truck 87</TruckName> 
<Website>http://www.test.com</Website> 
</FoodTruck> 
- <FoodTruck> 
<Company i:nil="true" /> 
<DayOfWeek i:nil="true" /> 
<Location i:nil="true" /> 
<TimeOfDay i:nil="true" /> 
<TruckID>0</TruckID> 
<TruckName>Bon Me</TruckName> 
<Website>http://www.test.com</Website> 
</FoodTruck> 
</ArrayOfFoodTruck> 

사전에 모두에게 감사 ... ..

static void GetInfo() 
    { 

     XElement rootXml = XElement.Load("http://localhost:5150/getnames"); 

     var FoodTruck = from C in rootXml.Elements() 
     select new { TruckName = (string)C.Element("TruckName"), WebSite = (string)C.Element("Website") }; 
     foreach (var x in FoodTruck) 

     Console.WriteLine("{0}\r\n{1}", x.TruckName, x.WebSite); 
     Console.ReadKey(); 

    } 

답변

1

난 당신이 네임 스페이스

XDocument xDoc = XDocument.Load(.....); 
XNamespace ns = XNamespace.Get("http://schemas.datacontract.org/2004/07/WCFServiceLibrary"); 

var result = xDoc.Descendants(ns+"FoodTruck") 
    .Select(n => new 
    { 
     TruckName=n.Element(ns+"TruckName").Value, 
     WebSite = n.Element(ns+"Website").Value 
    }) 
    .ToArray(); 

--edit에 문제가있는 것 같아요 -또는

XmlSerializer ser = new XmlSerializer(typeof(FoodTruck[]), "http://schemas.datacontract.org/2004/07/WCFServiceLibrary"); 
var foodTrucks = (FoodTruck[])ser.Deserialize(new StringReader(xml)); 

public class FoodTruck 
{ 
    public string Website; 
    public string TruckName; 
} 
+0

예 L.B. 감사합니다. 위의 방법은 C#을 사용하여 REST 서비스의 결과를 반환 할 때 사용할 좋은 방법입니까? 아니면 더 효율적인 방법이 있습니다. – midnightCoder

+0

@midnightCoder 초당 시간의 tausends 같은 일을하지 않으면 "효율"문제가 안됩니다. 구체적인 클래스에 비 직렬화하는 것이 다른 대안이 될 수 있습니다. –

+0

마지막 스 니펫을 가져 주셔서 감사합니다. 그들은 둘 다 일한다! – midnightCoder