private static IEnumerable <XmlNode> BuildTree(string xmlString, out CDataMatchHandler cdataMatchHandler) { cdataMatchHandler = new CDataMatchHandler(); xmlString = _encodeCDataRegex.Replace(xmlString, cdataMatchHandler.Encode); xmlString = _encodeRegex.Replace(xmlString, delegate(Match match) { string entiryStr = match.Groups["tag"].Value; return(IsCorrectEscapeEntity(entiryStr) ? _ampersandWord + entiryStr : "&" + entiryStr); }); var xmlReaderSettings = new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse, XmlResolver = null }; using (XmlReader xmlReader = XmlTextReader.Create(new StringReader(xmlString), xmlReaderSettings)) { return(BuildTree(xmlReader, 0).ToList()); } }
private static IEnumerable<XmlNode> BuildTree(string xmlString, out CDataMatchHandler cdataMatchHandler) { cdataMatchHandler = new CDataMatchHandler(); xmlString = _encodeCDataRegex.Replace(xmlString, cdataMatchHandler.Encode); xmlString = _encodeRegex.Replace(xmlString, delegate(Match match) { string entiryStr = match.Groups["tag"].Value; return IsCorrectEscapeEntity(entiryStr) ? _ampersandWord + entiryStr : "&" + entiryStr; }); var xmlReaderSettings = new XmlReaderSettings {DtdProcessing = DtdProcessing.Parse, XmlResolver = null}; using (XmlReader xmlReader = XmlTextReader.Create(new StringReader(xmlString), xmlReaderSettings)) { return BuildTree(xmlReader, 0).ToList(); } }