这是我的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]
答案 0 :(得分:1)
static void Main(string[] args)
{
string xml = @"<Cproducts>
<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>";
XDocument doc = XDocument.Parse(xml);
var list = (from element in doc.Elements("Cproducts").Elements("Availability").Elements("Departure")
where Convert.ToDateTime(element.Element("Date").Value) < DateTime.Now
select element).ToList();
foreach(XElement el in list)
{
Console.WriteLine(el.Element("Date").Value);
}
}
你究竟想做什么是不明白的。所以我给你写了一个从你的xml中选择日期的方法&lt;从今天开始。在您的情况下,您不应使用XDocument.Parse
,而是需要XDocument.Load(uri)
。另外下次至少尝试添加有效的xml。
答案 1 :(得分:1)
您可以像这样为
创建XML的seralizationimJPG2 = jpeg_read('foto2.jpg');
lum = imJPG2.coef_arrays{imJPG2.comp_info(1).component_id};
for i = 1:8
for j = 1:8
r = lum( i:8:end, j:8:end );
histogram(r(:), 'binmethod','integers');
pause();
end
end
为您的XML获取Objects的ObservableCollection会对您有所帮助,并且查询任何复杂数据也会更加容易。所以在当前的情况下。
您可以在序列化后创建[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; }
}
的ObservableCollection,然后可以使用LINQ进行查询。
Cproducts
该类将按此定义
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;
});