//============================================================ // WEB RESOURCE PARSING METHODS //============================================================ #region CreateSafeNavigator(string xml) /// <summary> /// Creates a <see cref="XPathNavigator"/> against the supplied XML data. /// </summary> /// <param name="xml">The XML data to be navigated by the created <see cref="XPathNavigator"/>.</param> /// <returns> /// An <see cref="XPathNavigator"/> that provides a cursor model for navigating the supplied XML data. /// The supplied <paramref name="xml"/> data is parsed to remove invalid XML characters that would normally prevent /// a navigator from being created. /// </returns> /// <exception cref="ArgumentNullException">The <paramref name="xml"/> data is a null reference (Nothing in Visual Basic).</exception> /// <exception cref="ArgumentNullException">The <paramref name="xml"/> data is an empty string.</exception> public static XPathNavigator CreateSafeNavigator(string xml) { //------------------------------------------------------------ // Local members //------------------------------------------------------------ XPathNavigator navigator = null; //------------------------------------------------------------ // Validate parameter //------------------------------------------------------------ Guard.ArgumentNotNullOrEmptyString(xml, "xml"); //------------------------------------------------------------ // Encode XML data to convert invalid XML hexadecimal values //------------------------------------------------------------ string safeXml = SyndicationEncodingUtility.RemoveInvalidXmlHexadecimalCharacters(xml); //------------------------------------------------------------ // Create navigator against safely encoded XML data //------------------------------------------------------------ using (StringReader reader = new StringReader(safeXml)) { XPathDocument document = new XPathDocument(reader); navigator = document.CreateNavigator(); } return(navigator); }
/// <summary> /// Creates a <see cref="XPathNavigator"/> against the supplied XML data. /// </summary> /// <param name="xml">The XML data to be navigated by the created <see cref="XPathNavigator"/>.</param> /// <returns> /// An <see cref="XPathNavigator"/> that provides a cursor model for navigating the supplied XML data. /// The supplied <paramref name="xml"/> data is parsed to remove invalid XML characters that would normally prevent /// a navigator from being created. /// </returns> /// <exception cref="ArgumentNullException">The <paramref name="xml"/> data is a null reference (Nothing in Visual Basic).</exception> /// <exception cref="ArgumentNullException">The <paramref name="xml"/> data is an empty string.</exception> public static XPathNavigator CreateSafeNavigator(string xml) { XPathNavigator navigator = null; Guard.ArgumentNotNullOrEmptyString(xml, "xml"); string safeXml = SyndicationEncodingUtility.RemoveInvalidXmlHexadecimalCharacters(xml); using (StringReader reader = new StringReader(safeXml)) { XPathDocument document = new XPathDocument(reader); navigator = document.CreateNavigator(); } return(navigator); }