Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# URI-ArrayOf-Null元素中的REST WCF服务_C#_Xml_Wcf_Rest - Fatal编程技术网

C# URI-ArrayOf-Null元素中的REST WCF服务

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

当我调用下面的“我的服务”时,XML元素TruckName和Website是否为null?很明显,这些元素是在web页面上的XML中填充的(请参见下面的XML)。我相信这和元素排列第一有关?下面是我的控制台应用程序调用GetInfo()方法的代码。我需要去掉ArrayOfFoodTruck元素吗?如果是这样,最简单的方法是什么。提前感谢大家

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