2012-05-17 45 views
0

當我像下面那樣調用我的服務時,XML元素TruckName和Website是空的?很明顯,這些元素在網頁上的XML中被顯示出來(見下面的xml)。我相信它與ArrayOf元素首先相關?下面是我的控制檯應用程序調用方法GetInfo()的代碼。我需要擺脫ArrayOfFoodTruck元素嗎?如果是這樣,最簡單的方法。感謝所有提前..來自URI的REST WCF服務 - ArrayOf - 空元素

- <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