簡體   English   中英

.NET讀取XML並根據條件選擇元素

[英].NET read XML and select elements based on condition

我正在研究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>

在我的控制器中,我想解析此文件,並且僅將具有“ start_date”作為當前當前日期的“ event”元素發送到我的視圖。

到目前為止,控制器方法如下所示:

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;
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM