c# - .NET read XML and select elements based on condition -



c# - .NET read XML and select elements based on condition -

i'm working on asp.net mvc application. in application, have xml file save info available next run of app.

here sample of 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>

in controller, parse file , send "event" elements view have "start_date" today's current date.

controller method looks far:

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

you can utilize linq xml query xml construction , elements need.

here illustration find elements specific date:

var doc = xdocument.load("xmlfile1.xml"); var res = new xdocument (new xelement("data", (from in doc.root.elements() i.element(xname.get("start_date")).value == "2014-10-21 09:45" select i))); var xml = res.tostring(); // reduced xml containing matching element

you utilize xpath , older xmldocument api query document:

var xdoc = new xmldocument(); xdoc.load("xmlfile1.xml"); xmlnode root = xdoc.documentelement; // select nodes match date status xmlnodelist node = root.selectnodes( "descendant::event[start_date='2014-10-21 09:45']");

c# asp.net xml

Comments