private static void ParseIconXML(UPnPDevice d, String XML) { StringReader MyString = new StringReader(XML); XmlTextReader XMLDoc = new XmlTextReader(MyString); String iurl = null; XMLDoc.Read(); XMLDoc.MoveToContent(); if (XMLDoc.LocalName == "icon") { XMLDoc.Read(); XMLDoc.MoveToContent(); while (XMLDoc.LocalName != "icon") { if (XMLDoc.LocalName == "url") { iurl = XMLDoc.ReadString(); } else { XMLDoc.Skip(); } XMLDoc.Read(); XMLDoc.MoveToContent(); } } if (iurl != null) { if (iurl.ToUpper().StartsWith("HTTP://") == false) { if (iurl.StartsWith("/") == true) { iurl = "http://" + d.BaseURL.Host + ":" + d.BaseURL.Port.ToString() + iurl; } else { iurl = HTTPMessage.UnEscapeString(d.BaseURL.AbsoluteUri + iurl); } } d.FetchIcon(new Uri(iurl)); } }
private static void ParseIconXML(UPnPDevice d, int startLine, String XML) { StringReader MyString = new StringReader(XML); XmlTextReader XMLDoc = new XmlTextReader(MyString); String iurl = null; try { XMLDoc.Read(); XMLDoc.MoveToContent(); if (XMLDoc.LocalName == "icon") { XMLDoc.Read(); XMLDoc.MoveToContent(); while (XMLDoc.LocalName != "icon") { if (XMLDoc.LocalName == "url") { iurl = XMLDoc.ReadString(); } else { XMLDoc.Skip(); } XMLDoc.Read(); XMLDoc.MoveToContent(); } } if (iurl != null && d.BaseURL != null) { if (iurl.ToUpper().StartsWith("HTTP://") == false) { if (iurl.StartsWith("/") == true) { iurl = "http://" + d.BaseURL.Host + ":" + d.BaseURL.Port.ToString() + iurl; } else { iurl = HTTPMessage.UnEscapeString(d.BaseURL.AbsoluteUri + iurl); } } d.FetchIcon(new Uri(iurl)); } } catch (Exception ex) { throw new Exception("Invalid icon XML near line " + (startLine + XMLDoc.LineNumber).ToString() + ", Position " + XMLDoc.LinePosition.ToString(), ex); } }