C# URI-ArrayOf-Null元素中的REST WCF服务
当我调用下面的“我的服务”时,XML元素TruckName和Website是否为null?很明显,这些元素是在web页面上的XML中填充的(请参见下面的XML)。我相信这和元素排列第一有关?下面是我的控制台应用程序调用GetInfo()方法的代码。我需要去掉ArrayOfFoodTruck元素吗?如果是这样,最简单的方法是什么。提前感谢大家C# URI-ArrayOf-Null元素中的REST WCF服务,c#,xml,wcf,rest,C#,Xml,Wcf,Rest,当我调用下面的“我的服务”时,XML元素TruckName和Website是否为null?很明显,这些元素是在web页面上的XML中填充的(请参见下面的XML)。我相信这和元素排列第一有关?下面是我的控制台应用程序调用GetInfo()方法的代码。我需要去掉ArrayOfFoodTruck元素吗?如果是这样,最简单的方法是什么。提前感谢大家 - <ArrayOfFoodTruck xmlns="http://schemas.datacontract.org/2004/07/WCFServi
- <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>
我想您对名称空间有问题
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();
--编辑--或
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;
}
是的,谢谢你,L.B.。当使用C#返回REST服务的结果时,上述方法也是一种好的做法吗?或者有没有更好更有效的方法。@middnightcoder如果你每秒不做相同的事情,那么“效率”应该不是问题。反序列化到具体类可以是另一种选择。
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;
}