public XPathNavigator GetNavigator(XmlEventCache events, XmlNameTable nameTable) { if (this.cache == null) { // Create XPathDocument from event cache XPathDocument doc = new XPathDocument(nameTable); XmlRawWriter writer = doc.LoadFromWriter(XPathDocument.LoadFlags.AtomizeNames | (events.HasRootNode ? XPathDocument.LoadFlags.None : XPathDocument.LoadFlags.Fragment), events.BaseUri); events.EventsToWriter(writer); writer.Close(); this.cache = doc; } return ((XPathDocument) this.cache).CreateNavigator(); }
/// <summary> /// Discard serialization hints and return a navigator that actually allows navigation. /// </summary> public override XPathNavigator ToNavigator() { return(_constr.GetNavigator(_text, _baseUri, new NameTable())); }