我正在开发ASP.Net MVC应用程序。 在我的应用程序中,我有一个xml文件,我保存信息,以便下次运行应用程序。
以下是XML示例:
<data>
<event>
<id><![CDATA[38079482]]></id>
<start_date><![CDATA[2014-10-21 09:45]]></start_date>
<end_date><![CDATA[2014-10-21 11:00]]></end_date>
<text><![CDATA[38079482]]></text>
<engineer_id><![CDATA[20602]]></engineer_id>
<color><![CDATA[#00CCCC]]></color>
<status><![CDATA[Dispatched]]></status>
<customer><![CDATA[Reed Hayes]]></customer>
<number><![CDATA[689-761-834 ]]></number>
<category><![CDATA[N/A]]></category>
</event>
<event>
<id><![CDATA[38129667]]></id>
<start_date><![CDATA[2014-10-20 11:20]]></start_date>
<end_date><![CDATA[2014-10-20 13:00]]></end_date>
<text><![CDATA[38129667]]></text>
<engineer_id><![CDATA[20525]]></engineer_id>
<color><![CDATA[Red]]></color>
<status><![CDATA[Cancelled]]></status>
<customer><![CDATA[Gervase Griffin]]></customer>
<number><![CDATA[400-401-401 ]]></number>
<category><![CDATA[N/A]]></category>
</event>
</data>
在我的控制器中,我想解析这个文件,只发送&#34; event&#34;我的观点中的元素有&#34; start_date&#34;今天的当前日期。
控制器方法到目前为止看起来像这样:
public void gatherXML()
{
string path = HttpContext.Server.MapPath("~/Content/Tasks.xml");
XmlDocument doc = new XmlDocument();
doc.Load(path);
doc.PreserveWhitespace = true;
ViewBag.xml = doc.InnerXml;
}
答案 0 :(得分:1)
您可以使用 LINQ to XML 查询XML结构,只获取您需要的元素。
以下是查找具有特定日期的元素的示例:
var doc = XDocument.Load("XMLFile1.xml");
var res = new XDocument
(new XElement("data",
(from i in doc.Root.Elements()
where i.Element(XName.Get("start_date")).Value == "2014-10-21 09:45"
select i)));
var xml = res.ToString(); // Reduced XML containing only the matching element
您还可以使用 XPath 和较旧的XmlDocument API来查询文档:
var xdoc = new XmlDocument();
xdoc.Load("XMLFile1.xml");
XmlNode root = xdoc.DocumentElement;
// Select the nodes that match the date condition
XmlNodeList node = root.SelectNodes(
"descendant::event[start_date='2014-10-21 09:45']");