C# Handle XML
By Dag, on December 30th, 2016Quick reference to XML handling in C#. Basic node navigation and attributes.
XmlDocument pmsXml = new XmlDocument(); pmsXml.LoadXml(xmlsource); XmlNode pmsXmlNode = pmsXml.SelectSingleNode("MediaContainer"); if (pmsXmlNode == null) { // Expected XML, got punched in the face instead! } else if (!pmsXmlNode.HasChildNodes) { // No child nodes. } else { // Travel through nodes. XmlNode subNode; string UserInfo; foreach (XmlElement ele in pmsXmlNode.ChildNodes) { UserInfo = ""; subNode = ele.SelectSingleNode("User"); UserInfo += "User: " + subNode.Attributes.GetNamedItem("title").Value; subNode = ele.SelectSingleNode("Player"); UserInfo += ", Player: " + subNode.Attributes.GetNamedItem("title").Value; if (ele.Attributes.GetNamedItem("type").Value == "episode") UserInfo += ", Show: " + ele.Attributes.GetNamedItem("grandparentTitle").Value; else UserInfo += ", Show: " + ele.Attributes.GetNamedItem("title").Value; // Do something with UserInfo... } }
Another snippet of code.
PMS_XML = new XmlDocument(); try { PMS_XML.LoadXml(ResponseString); } catch (Exception) { MainFrm.HasAuthenticated = false; MainFrm.LogThis("FAILED trying to read XML from specified IP/Host.\n", true); return ""; } // Look for VIDEO activity. foreach (XmlNode Video in PMS_XML.SelectNodes("MediaContainer/Video")) { ReturnString += Video.SelectSingleNode("User").Attributes["title"].Value; ReturnString += "\t"; if (Video.Attributes["type"].Value == "episode") ReturnString += Video.Attributes["grandparentTitle"].Value; else ReturnString += Video.Attributes["title"].Value; ReturnString += "\t"; ReturnString += Video.SelectSingleNode("Media/Part").Attributes["file"].Value; ReturnString += "\t"; ReturnString += Video.Attributes["sessionKey"].Value; ReturnString += Environment.NewLine; }