这是我的XML feed。它不止如此。
<Cproducts>
<ID>001</ID>
<Name>name one</Name>
<Availability>
<Departure>
<Date>2015-12-03T00:00:00.0000000+00:00</Date>
<Pricing>
<Price>
<Type>ADT</Type>
<Value>175.00</Value>
<Qty>20</Qty>
</Price>
<Price>
<Type>CHD</Type>
<Value>95.00</Value>
<Qty>5</Qty>
</Price>
<Price>
<Type>INF</Type>
<Value>0.00</Value>
<Qty>5</Qty>
</Price>
<Price>
<Type>FAM</Type>
<Value>0.00</Value>
<Qty>0</Qty>
</Price>
<Price>
<Type>SEN</Type>
<Value>175.00</Value>
<Qty>20</Qty>
</Price>
</Pricing>
</Departure>
<Departure>
<Date>2015-12-06T00:00:00.0000000+00:00</Date>
<Pricing>
<Price>
<Type>ADT</Type>
<Value>175.00</Value>
<Qty>20</Qty>
</Price>
<Price>
<Type>CHD</Type>
<Value>95.00</Value>
<Qty>5</Qty>
</Price>
<Price>
<Type>INF</Type>
<Value>0.00</Value>
<Qty>5</Qty>
</Price>
<Price>
<Type>FAM</Type>
<Value>0.00</Value>
<Qty>0</Qty>
</Price>
<Price>
<Type>SEN</Type>
<Value>175.00</Value>
<Qty>20</Qty>
</Price>
</Pricing>
</Departure>
<Availability>
</Cproducts>
在我的情况下,我想遍历所有可用日期。这意味着当用户从表单中选择一个日期时,然后根据该日期,应提供其他数据。为此,我必须仔细查看所有可用日期。我做到了 这是我在MVC中的代码。
public void getDatas(string destination, string cruisetype, string datetime)
{
XElement rootele = XElement.Load(Server.MapPath("~/XmlFiles/CruiseData/cruiseprodutstwo.xml"));
var selecttoDate = rootele.Elements("Cproducts").Elements("Availability").Elements("Departure").Elements("Date"); //here I want to get the data that the [date == datetime]
您可能可以像这样为XML创建序列化
[XmlRoot(ElementName="Price")]
public class Price {
[XmlElement(ElementName="Type")]
public string Type { get; set; }
[XmlElement(ElementName="Value")]
public string Value { get; set; }
[XmlElement(ElementName="Qty")]
public string Qty { get; set; }
}
[XmlRoot(ElementName="Pricing")]
public class Pricing {
[XmlElement(ElementName="Price")]
public List<Price> Price { get; set; }
}
[XmlRoot(ElementName="Departure")]
public class Departure {
[XmlElement(ElementName="Date")]
public string Date { get; set; }
[XmlElement(ElementName="Pricing")]
public Pricing Pricing { get; set; }
}
[XmlRoot(ElementName="Availability")]
public class Availability {
[XmlElement(ElementName="Departure")]
public List<Departure> Departure { get; set; }
}
[XmlRoot(ElementName="Cproducts")]
public class Cproducts {
[XmlElement(ElementName="Availability")]
public Availability Availability { get; set; }
}
这将使您受益于XML的对象的ObservableCollection,并且查询任何复杂数据也将更加容易。所以在当前情况下。
您可以Cproducts
在序列化之后创建一个ObservableCollection,然后可以使用LINQ查询。
ObservableCollection<Cproducts> ResultantCollection = new ObservableCollection<Cproducts>();
if(File.Exists(path + "\\YourXML.xml"))
{
XElement root = XElement.Load(path + "\\YourXML.xml");
root.Element("Cproducts").Elements("Availability").All<XElement>(xe =>
{
ResultantCollection.AddAvailability(Availability av);
return true;
});
该类将这样定义
public class CproductsColl : ObservableCollection<Cproducts>
{
public User AddAvailability(Availability av)
{
base.Add(av);
return av;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句