C# .NET读取XML并根据条件选择元素

C# .NET读取XML并根据条件选择元素,c#,asp.net,xml,C#,Asp.net,Xml,我正在开发一个ASP.NETMVC应用程序。 在我的应用程序中,我有一个xml文件,在其中保存信息以供下次运行应用程序时使用 以下是XML的一个示例: <data> <event> <id><![CDATA[38079482]]></id> <start_date><![CDATA[2014-10-21 09:45]]></start_date> <end_date&

我正在开发一个ASP.NETMVC应用程序。 在我的应用程序中,我有一个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>

您可以使用linqtoxml查询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']");

你的问题是什么?我想解析我的XML文件,只检索开始日期是今天的当前日期的元素。你需要LINQ到XML我会查的,谢谢!谢谢,第一个解决方案完美无瑕!我只需要在将代码发送到视图之前组织一些代码!
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']");