1

私のXML: http ://www.lakelandcollege.ca/rustlers/all-news.xml

このコードを使用して、1年分のアイテムノードを選択していました。


XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("/rustlers/all-news.xml"));
DataListArchive.DataSource = xmlDoc.SelectNodes("/items/item[contains(date,'2011')]");
DataListArchive.DataBind();

ただし、日付が2011年4月1日と2012年3月31日のアイテムノードを選択する必要があります。XMLの日付を実際の日付値に変換して範囲と比較するにはどうすればよいですか?

私は次のようなものが大好きです:


XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("/rustlers/all-news.xml"));
DataListArchive.DataSource = xmlDoc.SelectNodes("/items/item[date between '01-APR-2011' and '31-MAR-2012']");
DataListArchive.DataBind();
4

1 に答える 1

2

文字列を日付に変換したり、XPath 1.0で日付を操作したりする一般的な方法はありません-特定の場合(日付が特定の年の3月または4月であるかどうかを確認する):

/items/item[(contains(date,'April') or contains(date,'March')) and contains(date,'2010')]

* アップデート *

コードを見て、最も簡単な方法は、XPathを使用してすべてのitem要素を取得し、C#を使用してフィルタリングを実行することです。つまり、サブ要素の値を取得し、を使用しdateて日時に変換してから、DateTime.ParseC#コードでの比較。

拡張関数を.NETXPathに追加して、必要なことを実行することは可能ですが(これを参照)、非常に複雑であり、この場合はおそらく努力する価値がありません。

于 2012-08-14T14:26:58.047 に答える