public static void Main() { XmlNodeReader reader = null; try { //Create and load the XML document. XmlDocument doc = new XmlDocument(); doc.LoadXml("<!-- sample XML -->" + "<book>" + "<title>Pride And Prejudice</title>" + "<price>19.95</price>" + "</book>"); //Load the XmlNodeReader reader = new XmlNodeReader(doc); reader.MoveToContent(); //Move to the book node. reader.Read(); //Read the book start tag. reader.Skip(); //Skip the title element. Console.WriteLine(reader.ReadOuterXml()); //Read the price element. } finally { if (reader != null) { reader.Close(); } } }
public void NodeReaderSkipWithSimpleXml() { XmlNodeReader nodeReader = NodeReaderTestHelper.CreateNodeReader("<root atri='val'><child /></root>"); Assert.True(nodeReader.Read()); nodeReader.Skip(); Assert.True(nodeReader.EOF); Assert.Equal(ReadState.EndOfFile, nodeReader.ReadState); Assert.Equal(XmlNodeType.None, nodeReader.NodeType); }
public static void Main() { XmlNodeReader reader = null; try { //Create and load an XML document. XmlDocument doc = new XmlDocument(); doc.LoadXml("<!DOCTYPE book [<!ENTITY h 'hardcover'>]>" + "<book>" + "<title>Pride And Prejudice</title>" + "<misc>&h;</misc>" + "</book>"); //Create the reader. reader = new XmlNodeReader(doc); reader.MoveToContent(); //Move to the root element. reader.Read(); //Move to title start tag. reader.Skip(); //Skip the title element. //Read the misc start tag. The reader is now positioned on //the entity reference node. reader.ReadStartElement(); //You must call ResolveEntity to expand the entity reference. //The entity replacement text is then parsed and returned as a child node. Console.WriteLine("Expand the entity..."); reader.ResolveEntity(); Console.WriteLine("The entity replacement text is returned as a text node."); reader.Read(); Console.WriteLine("NodeType: {0} Value: {1}", reader.NodeType, reader.Value); Console.WriteLine("An EndEntity node closes the entity reference scope."); reader.Read(); Console.WriteLine("NodeType: {0} Name: {1}", reader.NodeType, reader.Name); } finally { if (reader != null) { reader.Close(); } } }
/// <summary> /// /// </summary> /// <param name="source"></param> /// <param name="propertyDescriptors"></param> /// <param name="destination"></param> /// <returns></returns> public object Deserialize(XmlDocument source, DbQueryPropertyDescriptors propertyDescriptors, object destination) { if (null != source && null != destination) { using (var _reader = new XmlNodeReader(source.FirstChild)) { //Fisrt node should be skipped. _reader.Skip(); Deserialize(_reader, propertyDescriptors, destination); _reader.Close(); _reader.Dispose(); } return(destination); } return(null); }
public override void Skip() { if (IsXmlDataNode) { xmlNodeReader.Skip(); } else { if (ReadState != ReadState.Interactive) { return; } MoveToElement(); if (IsElementNode(internalNodeType)) { int depth = 1; while (depth != 0) { if (!Read()) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.InvalidXmlDeserializingExtensionData)); } if (IsElementNode(internalNodeType)) { depth++; } else if (internalNodeType == ExtensionDataNodeType.EndElement) { ReadEndElement(); depth--; } } } else { Read(); } } }
public override void Skip() { if (IsXmlDataNode) { _xmlNodeReader.Skip(); } else { if (ReadState != ReadState.Interactive) { return; } MoveToElement(); if (IsElementNode(_internalNodeType)) { int depth = 1; while (depth != 0) { if (!Read()) { throw new XmlException(SRSerialization.InvalidXmlDeserializingExtensionData); } if (IsElementNode(_internalNodeType)) { depth++; } else if (_internalNodeType == ExtensionDataNodeType.EndElement) { ReadEndElement(); depth--; } } } else { Read(); } } }
/// <summary> /// Parses an IM log file and sends the information to GDS /// </summary> /// <param name="logFile">The IM conversations log file</param> /// <param name="lastIndexed">messages older than this will not be sent to GDS</param> private void ParseAndSendMessages(string logFile, DateTime lastIndexed) { XmlDocument doc = new XmlDocument(); doc.Load(logFile); XmlNodeReader reader = new XmlNodeReader(doc); // reset user and buddy name userName = null; buddyName = null; // Moves the reader to the root element. reader.MoveToContent(); // move to the first message reader.Read(); while (reader.LocalName == "Message") { // check the date of the message - if older skip reader.MoveToAttribute("DateTime"); DateTime messageDateTime = DateTime.Parse(reader.Value); reader.MoveToElement(); // if older than the last indexing time, skip the message if (messageDateTime.CompareTo(lastIndexed) <= 0) { reader.Skip(); continue; } // get message data MSNMessageData messageData = ParseMessageData(reader.ReadOuterXml()); // send this message to GDS for indexing SendMessageData(messageData); } }
public Object ToObjct <T>(String binaryString) { XmlReader reader_tmp; MethodInfo method; MethodInfo generic; XmlNode xmlDoc = xml.CreateElement("root"); xmlDoc.InnerXml = binaryString; XmlReader reader = new XmlNodeReader(xmlDoc); reader.MoveToContent(); reader.Read(); if (reader.Value == "null") { return(null); } if (typeof(T) == typeof(DateTime)) { while (reader.Name == "Value" || reader.NodeType != XmlNodeType.Text) { reader.Read(); } return (Convert.ChangeType( DateTime.ParseExact(reader.Value, "yyyy-MM-ddTHH:mm:ss.fffffffzzz", CultureInfo.InvariantCulture), typeof(T))); } if (typeof(T).IsPrimitive || typeof(T) == typeof(String)) { while (reader.NodeType != XmlNodeType.Text && reader.GetAttribute("IsEmptyStr") != "true") { reader.Read(); } T tmpVar = (T)Convert.ChangeType(reader.Value, typeof(T)); var asStr = tmpVar as string; if (asStr != null && (tmpVar as string) == "null") { tmpVar = default(T); } //reader.ReadToFollowing("Value"); //reader.Read(); return(tmpVar); } if (typeof(T).IsArray) { while (reader.GetAttribute("IsArray") == null) { reader.Read(); } int size = Convert.ToInt32(reader.GetAttribute("Len")); reader.Read(); var array = Array.CreateInstance(typeof(T).GetElementType(), size); for (int i = 0; i < size; i++) { reader_tmp = reader.ReadSubtree(); reader_tmp.MoveToContent(); method = typeof(Serial).GetMethod("ToObjct"); generic = method.MakeGenericMethod(Type.GetType(reader.GetAttribute("Type"))); var tmpint = generic.Invoke(this, new object[] { reader_tmp.ReadOuterXml() }); array.SetValue(tmpint, i); reader.Read(); } Convert.ChangeType(array, typeof(T)); return(array); } T ReturnObject; ReturnObject = (T)Activator.CreateInstance(typeof(T)); if (reader.Name == "RefToId" || reader.GetAttribute("IsToId") == "true") { if (reader.Name == "RefToId") { var tmp = relList[Convert.ToInt32(reader.Value)]; reader.Skip(); return(tmp); } else if (reader.GetAttribute("IsToId") == "true") { var tmp = relList[Convert.ToInt32(reader.GetAttribute("ToId"))]; reader.Skip(); reader.Read(); return(tmp); } } if (Id == 0) { relList.Add(0, ReturnObject); Id = -1; } else { if (Convert.ToInt32(reader.GetAttribute("Id")) == 0) { return(null); } if (!relList.ContainsKey(Convert.ToInt32(reader.GetAttribute("Id")))) { relList.Add(Convert.ToInt32(reader.GetAttribute("Id")), ReturnObject); } } FieldInfo[] fi = ReturnObject.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); for (int i = 0; i < fi.Length; i++) { while (reader.NodeType == XmlNodeType.EndElement || reader.Name != GetCleanFieldName(fi[i])) { reader.Read(); } if (IsReferenceType(fi[i].FieldType) && fi[i].FieldType != typeof(DateTime)) { bool RefFlag = false; bool ToIdFlag = false; int id; int toId; while (!(reader.GetAttribute("IsReference") == "true" || reader.GetAttribute("IsToId") == "true" || reader.Name == "RefToId" || reader.Value == "null") || reader.NodeType == XmlNodeType.EndElement) { reader.Read(); } if (reader.Value == "null") { return(null); } RefFlag = reader.Name == "RefToId"; ToIdFlag = reader.GetAttribute("IsToId") == "true"; id = Convert.ToInt32(reader.GetAttribute("Id")); toId = Convert.ToInt32(reader.GetAttribute("ToId")); method = typeof(Serial).GetMethod("ToObjct"); generic = method.MakeGenericMethod(fi[i].FieldType); if (RefFlag) { var tmp = relList[Convert.ToInt32(reader.Value)]; fi[i].SetValue(ReturnObject, tmp); reader.Skip(); reader.Read(); } else if (ToIdFlag) { var tmp = relList[toId]; fi[i].SetValue(ReturnObject, tmp); reader.Skip(); } else { reader_tmp = reader.ReadSubtree(); reader_tmp.MoveToContent(); var tmp = generic.Invoke(this, new object[] { reader_tmp.ReadOuterXml() }); fi[i].SetValue(ReturnObject, tmp); } continue; } if (reader.Name != GetCleanFieldName(fi[i])) { reader.ReadToFollowing(GetCleanFieldName(fi[i])); } reader_tmp = reader.ReadSubtree(); reader_tmp.MoveToContent(); method = typeof(Serial).GetMethod("ToObjct"); generic = method.MakeGenericMethod(fi[i].FieldType); var tmpint = generic.Invoke(this, new object[] { reader_tmp.ReadOuterXml() }); fi[i].SetValue(ReturnObject, tmpint); } return(ReturnObject); }
private void ExecuteSection(XmlNode section) { using (XmlNodeReader readerXML = new XmlNodeReader(section)) { try { Dictionary <String, String> actionParameters = new Dictionary <String, String>(); while (readerXML.Read()) { actionParameters.Clear(); while (readerXML.MoveToNextAttribute()) { actionParameters.Add(readerXML.Name, readerXML.Value); } readerXML.MoveToElement(); switch (readerXML.NodeType) { case XmlNodeType.Element: switch (readerXML.Name) { case "True": if (!_activeRuleSets.Peek().EngineState.ConditionalStack.Peek()) { readerXML.Skip(); } break; case "False": if (_activeRuleSets.Peek().EngineState.ConditionalStack.Peek()) { readerXML.Skip(); } break; case "Optional": if (MessageBox.Show(String.Format("Would you like to process {0} optional section?", actionParameters.ContainsKey("Name") ? actionParameters["Name"] : "the following"), "Optional Section Execution Confirmation", MessageBoxButton.YesNo) == MessageBoxResult.No) { readerXML.Skip(); } break; default: ExecuteElementStartRule(readerXML.Name, actionParameters); break; } break; case XmlNodeType.EndElement: switch (readerXML.Name) { case "True": case "False": case "Optional": break; default: ExecuteElementEndRule(readerXML.Name); break; } break; } } } catch (Exception ex) { } } }