public static QuestionGenerator CreateGeneratorFromXml(XmlReader reader) { bool used = reader.GetAttribute("Used").Equals("y"); if(!used) return null; QuestionGenerator generator = new QuestionGenerator(); generator.m_tags = reader.GetAttribute("Tags").Split(';'); generator.m_type = (GeneratorType)System.Enum.Parse(typeof(GeneratorType), reader.GetAttribute("Type")); generator.m_weight = System.Convert.ToSingle(reader.GetAttribute("Weight")); generator.m_questionText = reader.GetAttribute("QuestionText"); generator.m_adjacentWithin = System.Convert.ToInt32(reader.GetAttribute("AdjacentWithin")); generator.m_infoPrefix = reader.GetAttribute("InfoPrefix"); generator.m_infoSuffix = reader.GetAttribute("InfoSuffix"); bool preventDuplicates = generator.m_type == GeneratorType.SortedMultiset; reader.ReadToDescendant("Answer"); do{ generator.AddAnswer(reader.GetAttribute("Text"), reader.GetAttribute("Value"), preventDuplicates); }while(reader.ReadToNextSibling("Answer")); return generator; }
private PlistObjectBase LoadFromNode(XmlReader reader) { Debug.Assert(reader.NodeType == XmlNodeType.Element); bool isEmpty = reader.IsEmptyElement; switch (reader.LocalName) { case "dict": var dict = new PlistDictionary(true); if (!isEmpty) { if (reader.ReadToDescendant("key")) { dict = LoadDictionaryContents(reader, dict); } reader.ReadEndElement(); } return(dict); case "array": if (isEmpty) { return(new PlistArray()); } //advance to first node reader.ReadStartElement(); while (reader.Read() && reader.NodeType != XmlNodeType.Element) { ; } // HACK: plist data in iPods is not even valid in some cases! Way to go Apple! // This hack checks to see if they really meant for this array to be a dict. if (reader.LocalName == "key") { var ret = LoadDictionaryContents(reader, new PlistDictionary(true)); reader.ReadEndElement(); return(ret); } var arr = new PlistArray(); do { if (reader.NodeType == XmlNodeType.Element) { var val = LoadFromNode(reader); if (val != null) { arr.Add(val); } } } while (reader.Read() && reader.NodeType != XmlNodeType.EndElement); reader.ReadEndElement(); return(arr); case "string": return(new PlistString(reader.ReadElementContentAsString())); case "integer": return(new PlistInteger(reader.ReadElementContentAsInt())); case "real": return(new PlistReal(reader.ReadElementContentAsFloat())); case "false": reader.ReadStartElement(); if (!isEmpty) { reader.ReadEndElement(); } return(new PlistBoolean(false)); case "true": reader.ReadStartElement(); if (!isEmpty) { reader.ReadEndElement(); } return(new PlistBoolean(true)); case "data": return(new PlistData(reader.ReadElementContentAsString())); case "date": #if NETFX_CORE return(new PlistDate(DateTime.Parse(reader.ReadElementContentAsString()))); #else return(new PlistDate(reader.ReadElementContentAsDateTime())); #endif default: throw new XmlException(String.Format("Plist Node `{0}' is not supported", reader.LocalName)); } }
/// <summary> /// 读取选项配置文件中的XML内容。 /// </summary> /// <param name="reader">在选项配置文件中进行读取操作的<seealso cref="System.Xml.XmlReader"/>读取器。</param> protected internal virtual void DeserializeElement(XmlReader reader) { if (reader.ReadState == ReadState.Initial) { if (!reader.Read()) { throw new OptionConfigurationException(); } } OptionConfigurationProperty property; //反序列化当前元素的Attributes到当前元素的属性集 this.DeserializeAttributes(reader, this); //如果当前XML元素是空元素(即其没有子节点的元素),则返回 if (reader.IsEmptyElement) { return; } //定义当前读取器的初始深度 int depth = reader.Depth; //定义当前待解析子元素的当前配置项元素 OptionConfigurationElement element = this; while (reader.Read() && reader.Depth > depth) { if (reader.NodeType != XmlNodeType.Element) { continue; } if (reader.Depth == depth + 1) { element = this; } //如果当前配置项元素是配置集合,则约定当前读取器所处的位置应当处于其下的集合元素的XML节点处 if (typeof(OptionConfigurationElementCollection).IsAssignableFrom(element.GetType())) { //使用当前配置集合来解析当前读取器所处的XML节点内容 element.DeserializeElement(reader.ReadSubtree()); //忽略后续操作,直接进行后续XML内容处理 continue; } //根据当前XML元素名获取对应的配置属性定义项,如果获取失败则获取当前配置项中的默认集合属性定义项 if (!element.Properties.TryGetValue(reader.Name, out property)) { property = OptionConfigurationUtility.GetDefaultCollectionProperty(element.Properties); } //如果对应的配置属性定义项均获取失败则抛出异常 if (property == null) { throw new OptionConfigurationException(string.Format("The '{0}' option configuration element is unrecognized.", reader.Name)); } //获取或创建当前配置属性定义项对应的目标元素对象 element = element.EnsureElementPropertyValue(property); //判断获取的配置项元素是否为配置项集合 var collection = element as OptionConfigurationElementCollection; if (collection != null) { //如果当前配置项集合不是默认集合(即集合有对应的XML节点),则将当前读取器移动到其下的子元素的XML节点上 if (!property.IsDefaultCollection) { //反序列化当前元素中的Attributes到元素属性集中 this.DeserializeAttributes(reader, element); //将当前读取器移动到集合成员元素上 reader.ReadToDescendant(string.IsNullOrWhiteSpace(property.ElementName) ? collection.ElementName : property.ElementName); } } //调用当前配置元素对象的反序列化方法 element.DeserializeElement(reader.ReadSubtree()); } }
public void LoadMachine(string sName) { XmlReaderSettings settings = new XmlReaderSettings(); int r = 0; Machine = new clsMachine(); { settings.IgnoreWhitespace = true; settings.IgnoreComments = true; settings.IgnoreProcessingInstructions = true; settings.ProhibitDtd = true; settings.CloseInput = true; } using (XmlReader xReader = XmlReader.Create(sName, settings)) { { xReader.MoveToContent(); xReader.ReadToDescendant("Name"); Machine.Name = xReader.ReadElementContentAsString(); Machine.Description = xReader.ReadElementContentAsString(); Machine.AbsArcCenter = bool.Parse(xReader.ReadElementContentAsString()); Machine.LatheMinus = bool.Parse(xReader.ReadElementContentAsString()); Machine.HelixPitch = bool.Parse(xReader.ReadElementContentAsString()); Machine.BlockSkip = xReader.ReadElementContentAsString(); Machine.Comments = xReader.ReadElementContentAsString(); Machine.Endmain = xReader.ReadElementContentAsString(); Machine.MachineType = (MachineType)Enum.Parse(typeof(MachineType), xReader.ReadElementContentAsString()); Machine.RotaryAxis = (Axis)Enum.Parse(typeof(Axis), xReader.ReadElementContentAsString()); Machine.RotaryDir = (RotaryDirection)Enum.Parse(typeof(RotaryDirection), xReader.ReadElementContentAsString()); Machine.Precision = int.Parse(xReader.ReadElementContentAsString()); Machine.ProgramId = xReader.ReadElementContentAsString(); Machine.SubReturn = xReader.ReadElementContentAsString(); Machine.RotPrecision = int.Parse(xReader.ReadElementContentAsString()); Machine.RotaryType = (RotaryMotionType)Enum.Parse(typeof(RotaryMotionType), xReader.ReadElementContentAsString()); Machine.Searchstring = xReader.ReadElementContentAsString(); for (r = 0; r <= Machine.ViewAngles.Length - 1; r++) { Machine.ViewAngles[r] = float.Parse(xReader.ReadElementContentAsString()); } for (r = 0; r <= Machine.ViewShift.Length - 1; r++) { Machine.ViewShift[r] = float.Parse(xReader.ReadElementContentAsString()); } Machine.Absolute = xReader.ReadElementContentAsString(); Machine.Incremental = xReader.ReadElementContentAsString(); Machine.CCArc = xReader.ReadElementContentAsString(); Machine.CWArc = xReader.ReadElementContentAsString(); Machine.DrillRapid = xReader.ReadElementContentAsString(); for (r = 0; r <= Machine.Drills.Length - 1; r++) { Machine.Drills[r] = xReader.ReadElementContentAsString(); } Machine.Linear = xReader.ReadElementContentAsString(); Machine.Rapid = xReader.ReadElementContentAsString(); Machine.ReturnLevel[0] = xReader.ReadElementContentAsString(); Machine.ReturnLevel[1] = xReader.ReadElementContentAsString(); Machine.Rotary = xReader.ReadElementContentAsString(); Machine.XYplane = xReader.ReadElementContentAsString(); Machine.XZplane = xReader.ReadElementContentAsString(); Machine.YZplane = xReader.ReadElementContentAsString(); Machine.Subcall = xReader.ReadElementContentAsString(); Machine.SubRepeats = xReader.ReadElementContentAsString(); } } mMachines.Add(Machine); if (MachineLoaded != null) { MachineLoaded(Machine); } }
void ReadTranslateArrayResponse(IAsyncResult asyncResult) { TranslateTextArrayData translationData = null; HttpWebRequest request = null; HttpWebResponse response = null; try { translationData = asyncResult.AsyncState as TranslateTextArrayData; request = translationData.translationWebRequest as HttpWebRequest; response = request.EndGetResponse(asyncResult) as HttpWebResponse; using (Stream stream = response.GetResponseStream()) { List <string> translatedTexts = new List <string>(); using (XmlReader reader = XmlReader.Create(stream)) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (reader.Name == "TranslateArrayResponse") { if (reader.ReadToDescendant("TranslatedText")) { do { translatedTexts.Add(reader.ReadString()); }while (reader.ReadToNextSibling("TranslatedText")); } } } } } Debug.Log("Successfully translated keys!"); if (translationData.eventHandler != null) { translationData.eventHandler(true, translationData.keys, translatedTexts); } translationData.eventHandler = null; } } catch (WebException exception) { Debug.LogError("Failed to translate text array! error: " + exception.Message); using (Stream streamResponse = exception.Response.GetResponseStream()) { using (StreamReader reader = new StreamReader(streamResponse)) { Debug.LogError(reader.ReadToEnd()); } } if (translationData.eventHandler != null) { translationData.eventHandler(false, null, null); } translationData.eventHandler = null; } finally { if (response != null) { response.Close(); response = null; } } }
public override void GenerateTestReport(TextWriter writer, XmlReader reader) { if (!reader.ReadToFollowing("test-results")) { return; } long.TryParse(reader["errors"], out var errors); long.TryParse(reader["failures"], out var failures); if (errors == 0 && failures == 0) { return; } writer.WriteLine("<div style='padding-left: 15px;'>"); writer.WriteLine("<ul>"); void write_failure() { var name = reader["name"]; string?message = null; var depth = reader.Depth; if (reader.ReadToDescendant("message")) { message = reader.ReadElementContentAsString(); // ReadToParent while (depth > reader.Depth && reader.Read()) { } } var message_block = message?.IndexOf('\n') >= 0; writer.WriteLine("<li>"); writer.Write(name.AsHtml()); if (!string.IsNullOrEmpty(message)) { writer.Write(": "); if (message_block) { writer.WriteLine("<div style='padding-left: 15px;'>"); } writer.Write(message.AsHtml()); if (message_block) { writer.WriteLine("</div>"); } } writer.WriteLine("</li>"); } while (reader.ReadToFollowing("test-suite")) { if (reader["type"] == "Assembly") { continue; } var result = reader["result"]; if (result != "Error" && result != "Failure") { continue; } if (result == "Error") { write_failure(); } var depth = reader.Depth; while (reader.Read()) { if (reader.NodeType != XmlNodeType.Element || reader.Name != "test-case") { continue; } result = reader["result"]; if (result == "Error" || result == "Failure") { write_failure(); } if (reader.Depth < depth) { break; } } } writer.WriteLine("</ul>"); writer.WriteLine("</div>"); }
public void Reset() { reader = new XmlTextReader(filePath); reader.ReadToDescendant("Event"); }
protected void LoadPosition(XmlReader reader) { reader.ReadToFollowing ("Position"); reader.ReadToDescendant ("x"); Vector3 loadedPosition = new Vector3 (); loadedPosition.x = reader.ReadElementContentAsFloat (); reader.ReadToNextSibling ("y"); loadedPosition.y = reader.ReadElementContentAsFloat (); reader.ReadToNextSibling ("z"); loadedPosition.z = reader.ReadElementContentAsFloat (); transform.position = loadedPosition; reader.ReadEndElement (); }
public override bool ReadToDescendant(string name) { return(innerReader.ReadToDescendant(name)); }
public static void ReadReadingMeaning(Kanji kanji, XmlReader reader) { reader.ReadToDescendant("rmgroup"); ReadRMGroup(kanji, reader.ReadSubtree()); reader.Close(); }
public MFTestResults SPOTXml_XmlReader_MethodsTest3() { /// <summary> /// Tests all of the XmlReader methods in SPOT.Xml /// </summary> /// bool testResult = true; try { Log.Comment("Creating XmlReader with Stream"); XmlReader testReader = XmlReader.Create(new TestStream()); Log.Comment("Close"); testReader.Close(); if (testReader.ReadState != ReadState.Closed) { testResult = false; Log.Exception("Close did not function properly"); } testReader = XmlReader.Create(new TestStream()); Log.Comment("GetAttribute"); try { if ("" == testReader.GetAttribute(0)) { testResult = false; Log.Exception("GetAttribute succeeded with 0 attributes"); } } catch (ArgumentOutOfRangeException e) { Log.Exception("ArgumentOutOfRangeException caught in SPOTXml_XmlReader_MethodsTest3::GetAttribute(0): ", e); } // Add Additional tests for the overloaded GetAttribute // public abstract string GetAttribute(string name); // public abstract string GetAttribute(string name, string namespaceURI); Log.Comment("IsStartElement"); if (!testReader.IsStartElement()) { testResult = false; Log.Exception("IsStartElement returned false before read"); } testReader.Read(); if (!testReader.IsStartElement()) { testResult = false; Log.Exception("IsStartElement returned false after read to 1st elt"); } testReader.Read(); testReader.Read(); if (testReader.IsStartElement()) { testResult = false; Log.Exception("IsStartElement returned true after read to an end elt"); } testReader = XmlReader.Create(new TestStream()); if (!testReader.IsStartElement("root")) { testResult = false; Log.Exception("IsStartElement(string) returned false for root"); } if (testReader.IsStartElement("TestElement1")) { testResult = false; Log.Exception("IsStartElement(string) returned true for TestElement1"); } if (testReader.IsStartElement("FakeData")) { testResult = false; Log.Exception("IsStartElement(string) returned true for FakeData"); } testReader = XmlReader.Create(new TestStream()); if (!testReader.IsStartElement("root", "")) { testResult = false; Log.Exception("IsStartElement(string,string) returned false for root, namespace"); } if (testReader.IsStartElement("root", "FakeNamespaceURI")) { testResult = false; Log.Exception("IsStartElement(string,string) returned true for root, FakeNamespaceURI"); } if (testReader.IsStartElement("TestElement1", "")) { testResult = false; Log.Exception("IsStartElement(string,string) returned true for TestElement1"); } testReader = XmlReader.Create(new TestStream()); if (testReader.LookupNamespace("XT") != null) { testResult = false; Log.Exception("LookupNamespace returned incorrect data"); } testResult &= testReader.Read(); if (testReader.LookupNamespace("XT") != "TestNS") { testResult = false; Log.Exception("LookupNamespace returned incorrect data after read"); } if (testReader.LookupNamespace("") != "") { testResult = false; Log.Exception("LookupNamespace returned incorrect data for bad arg after read"); } testReader = XmlReader.Create(new TestStream()); Log.Comment("MoveToX methods"); testReader.MoveToContent(); if (testReader.Name != "root") { testResult = false; Log.Exception("MoveToContent went to wrong node"); } testReader.MoveToElement(); if (testReader.Name != "root") { testResult = false; Log.Exception("MoveToElementwent to wrong node"); } testResult &= testReader.MoveToFirstAttribute(); if (testReader.Name != "xmlns:XT") { testResult = false; Log.Exception("MoveToFirstAttribute went to wrong node"); } testResult &= testReader.MoveToNextAttribute(); if (testReader.Name != "XT:TestLocalName") { testResult = false; Log.Exception("MoveToFirstAttribute went to wrong node"); } Log.Comment("ReadElementString"); testReader = XmlReader.Create(new TestStream()); //TODO: Exception testing here under investigation //testReader.ReadElementString(); testReader.Read(); testReader.Read(); testReader.Read(); if (testReader.ReadElementString() != "") { testResult = false; Log.Exception("ReadElementString returned bad data for empty node"); } testReader.Read(); if (testReader.ReadElementString() != "TestElement2Data") { testResult = false; Log.Exception("ReadElementString returned bad data for full node"); } testReader = XmlReader.Create(new TestStream()); testReader.Read(); testReader.Read(); testReader.Read(); if (testReader.ReadString() != "") { testResult = false; Log.Exception("ReadString returned bad data for empty node"); } testReader.Read(); testReader.Read(); if (testReader.ReadString() != "TestElement2Data") { testResult = false; Log.Exception("ReadString returned bad data for full node"); } testReader = XmlReader.Create(new TestStream()); testReader.Read(); testReader.Read(); testReader.Read(); if (testReader.ReadElementString("ChildOfTestElement1") != "") { testResult = false; Log.Exception("ReadElementString returned bad data for empty node"); } testReader.Read(); if (testReader.ReadElementString("TestElement2") != "TestElement2Data") { testResult = false; Log.Exception("ReadElementString returned bad data for full node"); } testReader = XmlReader.Create(new TestStream()); testReader.Read(); testReader.Read(); testReader.Read(); if (testReader.ReadElementString("ChildOfTestElement1", "") != "") { testResult = false; Log.Exception("ReadElementString returned bad data for empty node"); } testReader.Read(); if (testReader.ReadElementString("TestElement2", "") != "TestElement2Data") { testResult = false; Log.Exception("ReadElementString returned bad data for full node"); } testReader = XmlReader.Create(new TestStream()); //Add tests for overloaded ReadStartElement // public virtual void ReadStartElement(string name); // public virtual void ReadStartElement(string localname, string ns); testReader.ReadStartElement(); if (testReader.Name != "TestElement1") { testResult = false; Log.Exception("ReadStartElement failed on start element"); } try { testReader.ReadEndElement(); testResult = false; Log.Comment("FAILURE - ReadEndElement succeded on Start element "); } catch (XmlException e) { Log.Exception("XMLException - ReadEndElement succeeded on Start element ", e); } testReader.Read(); testReader.Read(); testReader.ReadEndElement(); if (testReader.Name != "TestElement2") { testResult = false; Log.Exception("ReadEndElement failed on end element"); } testReader.Read(); try { testReader.ReadStartElement(); testResult = false; Log.Comment("FAILURE - ReadStartElement succeeded on end element "); } catch (XmlException e) { Log.Exception("ReadStartElement failed on end element", e); } testReader = XmlReader.Create(new TestStream()); //Add tests for the overloaded ReadToDescendant // public virtual bool ReadToDescendant(string localName, string namespaceURI); testReader.ReadToDescendant("ChildOfTestElement1"); if (testReader.Name != "ChildOfTestElement1") { testResult = false; Log.Exception("ReadToDescendant read to wrong location"); } testReader = XmlReader.Create(new TestStream()); // public virtual bool ReadToDescendant(string Name) // passing in empty string. try { testReader.ReadToDescendant(""); } catch (ArgumentException e) { if (testReader.Name != "") { testResult = false; Log.Exception("ReadToDescendant read to a location erroneously ", e); } } testReader = XmlReader.Create(new TestStream()); testReader.ReadToDescendant("ChildOfTestElement2"); if (testReader.Name != "") { testResult = false; Log.Exception("ReadToDescendant read to a location erroneously"); } testReader = XmlReader.Create(new TestStream()); testReader.ReadToDescendant("ChildOfTestElement1", ""); if (testReader.Name != "ChildOfTestElement1") { testResult = false; Log.Exception("ReadToDescendant with namesapce read to wrong location"); } testReader = XmlReader.Create(new TestStream()); testReader.ReadToDescendant("ChildOfTestElement2", ""); if (testReader.Name != "") { testResult = false; Log.Exception("ReadToDescendant with namesapce read to a location erroneously"); } testReader = XmlReader.Create(new TestStream()); //Add tests for the overloaded ReadToDescendant // public virtual bool ReadToFollowing(string localName, string namespaceURI); testReader.ReadToFollowing("ChildOfTestElement1"); if (testReader.Name != "ChildOfTestElement1") { testResult = false; Log.Exception("ReadToFollowing read to wrong location"); } testReader = XmlReader.Create(new TestStream()); testReader.ReadToFollowing("ChildOfTestElement2"); if (testReader.Name != "") { testResult = false; Log.Exception("ReadToFollowing read to a location erroneously"); } testReader = XmlReader.Create(new TestStream()); testReader.ReadToFollowing("ChildOfTestElement1", ""); if (testReader.Name != "ChildOfTestElement1") { testResult = false; Log.Exception("ReadToFollowing with namesapce read to wrong location"); } testReader = XmlReader.Create(new TestStream()); testReader.ReadToFollowing("ChildOfTestElement2", ""); if (testReader.Name != "") { testResult = false; Log.Exception("ReadToFollowing with namesapce read to a location erroneously"); } Log.Comment("ReadToNextSibling method"); testReader = XmlReader.Create(new TestStream()); testReader.Read(); testReader.Read(); if (!testReader.ReadToNextSibling("TestElement2")) { testResult = false; Log.Exception("ReadToNextSibling return false for TestElement2"); } testReader = XmlReader.Create(new TestStream()); testReader.Read(); if (testReader.ReadToNextSibling("TestElement1", "")) { testResult = false; Log.Exception("Bug 57189: ReadToNextSibling return true for TestElement1"); } testReader = XmlReader.Create(new TestStream()); testReader.Read(); testReader.Read(); if (!testReader.ReadToNextSibling("TestElement2", "")) { testResult = false; Log.Exception("ReadToNextSibling return false for TestElement2"); } Log.Comment("Skip"); testReader = XmlReader.Create(new TestStream()); testReader.Read(); testReader.Read(); testReader.Skip(); if (testReader.Name != "TestElement2") { testResult = false; Log.Exception("Skip failed to advance to correct node"); } } catch (Exception e) { testResult = false; Log.Exception("Incorrect exception caught: ", e); } return(testResult ? MFTestResults.Pass : MFTestResults.Fail); }
internal static object ReadXmlValue(XmlReader reader) { switch (reader.Name) { case "null": reader.Read(); return(null); case "undefined": reader.Read(); return(Undefined.Value); case "true": reader.Read(); return(true); case "false": reader.Read(); return(false); case "string": return(reader.ReadElementContentAsString()); case "number": string number = reader.ReadElementContentAsString(); int i; if (int.TryParse(number, out i)) { return(i); } float f; if (float.TryParse(number, out f)) { return(f); } double d; if (double.TryParse(number, out d)) { return(d); } throw new InvalidDataException("Invalid number"); case "array": List <object> list = new List <object>(); if (reader.ReadToDescendant("property")) { do { reader.MoveToAttribute("id"); int id = reader.ReadContentAsInt(); object value = ReadXmlValue(reader); list.Add(value); } while (reader.ReadToNextSibling("property")); } reader.ReadEndElement(); return(list.ToArray()); case "object": Dictionary <string, object> obj = new Dictionary <string, object>(); if (reader.ReadToDescendant("property")) { do { string key = reader.GetAttribute("id"); object value = ReadXmlValue(reader); obj.Add(key, value); } while (reader.ReadToNextSibling("property")); } reader.ReadEndElement(); return(obj); } throw new InvalidDataException("Invalid XML data"); }
private void ReadREle(JWord kanji, XmlReader reader) { reader.ReadToDescendant("reb"); kanji.Reading = reader.ReadElementContentAsString(); reader.Close(); }
private static bool ReadToChild(XmlReader reader, int depth, string elementName, string elementNamespace = "") { return(reader.ReadToDescendant(elementName, elementNamespace) && reader.Depth == depth); }
public override bool ReadToDescendant(string name) { this.IsCalled = true; return(_wrappedreader.ReadToDescendant(name)); }
internal override void ProcessXmlCore(XmlReader reader) { switch (reader.Name) { case "text-representation": language = reader["language"]; script = reader["script"]; break; case "asin": asin = reader.ReadString(); break; case "disc-list": if (reader.ReadToDescendant("disc")) { List <Disc> discs = new List <Disc> (); do { discs.Add(new Disc(reader.ReadSubtree())); }while (reader.ReadToNextSibling("disc")); this.discs = discs.AsReadOnly(); } break; case "release-event-list": if (!AllDataLoaded) { reader.Skip(); // FIXME this is a workaround for Mono bug 334752 return; } if (reader.ReadToDescendant("event")) { List <Event> events = new List <Event> (); do { events.Add(new Event(reader.ReadSubtree())); }while (reader.ReadToNextSibling("event")); this.events = events.AsReadOnly(); } break; case "track-list": string offset = reader["offset"]; if (offset != null) { track_number = int.Parse(offset) + 1; } if (reader.ReadToDescendant("track")) { List <Track> tracks = new List <Track> (); do { tracks.Add(new Track(reader.ReadSubtree(), GetArtist(), AllDataLoaded)); }while (reader.ReadToNextSibling("track")); this.tracks = tracks.AsReadOnly(); } break; default: base.ProcessXmlCore(reader); break; } }
/// <summary> /// Builds the transcript by making an API request to the SocialMiner server /// and splitting the result into individual transcript entries /// These entries are added to a linkedlist in social contact and hold the transcript data /// TODO: This is so bad, make it better by /// TODO: Make the XML parsing more explicit /// TODO: Standardize the refURL /// TODO: Figure out why "No transcript" isn't working /// TODO: Potentially insert reference to nebulous "make request" function to improve code duplicate problems /// </summary> public void createTranscriptLL() { //API call string transcriptRefUrl = refURL + "/transcript"; //Transcript entry component variables double tempTimestamp; string tempName; string tempBody; //***************Begin Web Request Block***************\\ //create WebRequest //Console.WriteLine(transcriptRefUrl); var httpWebRequest = (HttpWebRequest)WebRequest.Create(transcriptRefUrl); //Request method httpWebRequest.Method = "GET"; //Add auth header httpWebRequest.Headers.Add("Authorization", "Basic " + socialMinerCredentials); //TODO: Figure out why a missing transcript returns a 404 instead of the API errors thing try { using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse()) using (Stream stream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(stream)) { raw = reader.ReadToEnd(); } } catch (WebException ex) { //Console.WriteLine("404!"); transcript.AddLast(new TranscriptEntry(0, "No Name", "No Transcript")); return; } //***************End Web Request Block***************\\ //***************Begin XML Parsing Block*************\\ using (XmlReader reader = XmlReader.Create(new StringReader(raw))) { //TODO: make this better while (true) { if (reader.ReadToFollowing("chat")) { XmlReader inner = reader.ReadSubtree(); inner.ReadToDescendant("time"); tempTimestamp = inner.ReadElementContentAsDouble(); //Console.WriteLine(tempTimestamp); //reader.Read(); tempName = inner.ReadElementContentAsString(); //Console.WriteLine(tempName); //reader.Read(); tempBody = inner.ReadElementContentAsString(); //Console.WriteLine(tempBody); if (transcript.Last == null) { transcript.AddLast(new TranscriptEntry(tempTimestamp, tempName, tempBody)); } else { transcript.AddAfter(transcript.Last, new TranscriptEntry(tempTimestamp, tempName, tempBody)); } inner.Close(); } else if (reader.ReadToFollowing("apiErrors")) { transcript.AddLast(new TranscriptEntry(0, "No Name", "No Transcript")); } else { break; } } } //***************End XML Parsing Block***************\\ //Begin test block //XDocument xDoc = XDocument.Load(raw); }
private static void WaterMLSitesXMLReader(List <SiteInfoNCDC> sites, XmlReader xmlReader, string DefaultDatasetID) { xmlReader.ReadToDescendant("site", Utility.WaterMlNs); while (xmlReader.IsStartElement()) { xmlReader.ReadToDescendant("siteInfo", Utility.WaterMlNs); XmlReader siteReader = xmlReader.ReadSubtree(); SiteInfoNCDC site = new SiteInfoNCDC(); site.DatasetID = DefaultDatasetID; /* * <ns2:siteInfo> * <ns2:siteCode siteID="99999925226" network="NCDC" defaultId="true">SMITH RIVER</ns2:siteCode> * <ns2:geoLocation> * <ns2:geogLocation xsi:type="ns2:LatLonPointType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> * <ns2:latitude>0.0599</ns2:latitude> * <ns2:longitude>-0.12643333</ns2:longitude> * </ns2:geogLocation> * </ns2:geoLocation> * </ns2:siteInfo> */ siteReader.ReadStartElement(); while (siteReader.IsStartElement()) { switch (siteReader.LocalName) { case "siteCode": /* * <ns2:siteCode * siteID="99999925226" * network="NCDC" * defaultId="true">SMITH RIVER</ns2:siteCode> */ if (siteReader.HasAttributes) { // siteReader.MoveToFirstAttribute(); while (siteReader.MoveToNextAttribute()) { switch (siteReader.LocalName) { case "siteID": site.StationID = siteReader.ReadContentAsString(); break; case "network": break; default: break; } ; } } siteReader.MoveToElement(); site.SiteName = siteReader.ReadElementContentAsString(); break; case "geoLocation": /* <ns2:geoLocation> * <ns2:geogLocation xsi:type="ns2:LatLonPointType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> * <ns2:latitude>0.0599</ns2:latitude> * <ns2:longitude>-0.12643333</ns2:longitude> * </ns2:geogLocation> */ try { siteReader.ReadToDescendant("latitude", Utility.WaterMlNs); if (siteReader.NodeType != XmlNodeType.None) { double lat = 0.0; string lString = siteReader.ReadElementContentAsString("latitude", Utility.WaterMlNs); if (double.TryParse( lString, out lat)) { site.Latitude = lat; } } //siteReader.ReadEndElement(); // not needed after read content if (siteReader.LocalName != "longitude") { siteReader.ReadToFollowing("longitude", Utility.WaterMlNs); } if (siteReader.NodeType != XmlNodeType.None) { double lon = 0.0; string lString = siteReader.ReadElementContentAsString("longitude", Utility.WaterMlNs); if (double.TryParse( lString, out lon)) { site.Longitude = lon; } } //siteReader.ReadEndElement(); //long // not needed after read content siteReader.ReadEndElement(); //geoglocation siteReader.ReadEndElement(); // geolocation break; } catch { ReadState state = siteReader.ReadState; if (siteReader.NodeType == null) { siteReader.Skip(); } else { siteReader.ReadEndElement(); } break; } default: log.Error("New Node name in site " + siteReader.Name); siteReader.ReadEndElement(); break; } //siteReader.ReadEndElement(); //siteReader.ReadStartElement(); } sites.Add(site); xmlReader.ReadEndElement(); // siteInfo xmlReader.ReadEndElement(); //site } }
void ReadXml_Tiles(XmlReader reader) { int x, y, start, end; if (reader.ReadToDescendant("Tile")) { do { if (reader.GetAttribute("X") != null && reader.GetAttribute("Y") != null) { x = int.Parse(reader.GetAttribute("X")); y = int.Parse(reader.GetAttribute("Y")); if (x > Width || x < 0 || y > Height || y < 0) { Debug.LogError("(X,Y) in XML is Out of Bounds for Area (" + x + ", " + y + ")"); continue; } tiles[x, y].ReadXml(reader); } else if (reader.GetAttribute("Fill") != null) { string fillType = reader.GetAttribute("Fill"); x = int.Parse(reader.GetAttribute(fillType)); start = int.Parse(reader.GetAttribute("Start")); end = int.Parse(reader.GetAttribute("End")); if (fillType == "Row") { for (int i = start; i <= end; i++) { tiles[i, x].ReadXml(reader); } } else if (fillType == "Column") { for (int i = start; i <= end; i++) { tiles[x, i].ReadXml(reader); } } } else if (reader.GetAttribute("Row") != null || reader.GetAttribute("Column") != null) { if (reader.GetAttribute("Row") != null) { y = int.Parse(reader.GetAttribute("Row")); for (int i = 0; i < Width; i++) { tiles[i, y].ReadXml(reader); } } else if (reader.GetAttribute("Column") != null) { x = int.Parse(reader.GetAttribute("Column")); for (int i = 0; i < Height; i++) { tiles[x, i].ReadXml(reader); } } } else { for (int w = 0; w < Width; w++) { for (int h = 0; h < Height; h++) { tiles[w, h].ReadXml(reader); } } } } while (reader.ReadToNextSibling("Tile")); } }
private static void NCDCSitesXMLReader(List <SiteInfoNCDC> sites, XmlReader xmlReader) { xmlReader.ReadToDescendant("site"); while (xmlReader.IsStartElement() && xmlReader.Name.Equals("site")) { XmlReader siteReader = xmlReader.ReadSubtree(); SiteInfoNCDC site = new SiteInfoNCDC(); siteReader.ReadStartElement(); while (siteReader.IsStartElement()) { if (siteReader.Name.Equals("site")) { break; } switch (siteReader.Name) { case "datasetid": site.DatasetID = siteReader.ReadString(); break; case "stationid": site.StationID = siteReader.ReadString(); break; case "name": site.SiteName = siteReader.ReadString(); break; case "lat": site.SetLatitude(siteReader.ReadString()); break; case "lon": site.SetLongitude(siteReader.ReadString()); break; case "lowdate": site.SetBeginDate(siteReader.ReadString()); break; case "highdate": site.SetEndDate(siteReader.ReadString()); break; case "elev": site.SetElevation(siteReader.ReadString()); break; case "abbrev": siteReader.ReadString(); break; default: log.Error("New Node name in site " + siteReader.Name); siteReader.ReadString(); break; } try { if (!siteReader.IsEmptyElement) { siteReader.ReadEndElement(); } else { siteReader.Skip(); } } catch { siteReader.Read(); // ignore } //siteReader.ReadStartElement(); } sites.Add(site); if (!xmlReader.IsStartElement()) { xmlReader.ReadEndElement(); } } }
public override bool ReadToDescendant(string name) { IncrementCount(); return(_innerReader.ReadToDescendant(name)); }
public void loadXMLFile(List <Employee> list) { bool readEndOfFile = false; string path = @"C:\Users\Anhkhoi\Source\Repos\CECS-475\CECS 475 - Lab Assignment 05\CECS 475 - Lab Assignment 05\employee_xml.xml"; XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; settings.IgnoreComments = true; // create the XmlReader object XmlReader xmlIn = XmlReader.Create(path, settings); while (!readEndOfFile) { // read past all nodes to the first Product node if (xmlIn.ReadToDescendant("Employee")) { // create one Product object for each Product node do { SalariedEmployee sEmployee = new SalariedEmployee(); sEmployee.Tag = xmlIn["Tag"]; if (sEmployee.Tag == "SalariedEmployee") { xmlIn.ReadStartElement("Employee"); sEmployee.FirstName = xmlIn.ReadElementContentAsString(); sEmployee.LastName = xmlIn.ReadElementContentAsString(); sEmployee.SocialSecurityNumber = xmlIn.ReadElementContentAsString(); sEmployee.GetPaymentAmount = xmlIn.ReadElementContentAsDecimal(); list.Add(sEmployee); } else if (sEmployee.Tag == "HourlyEmployee") { HourlyEmployee hEmployee = new HourlyEmployee(); xmlIn.ReadStartElement("Employee"); hEmployee.FirstName = xmlIn.ReadElementContentAsString(); hEmployee.LastName = xmlIn.ReadElementContentAsString(); hEmployee.SocialSecurityNumber = xmlIn.ReadElementContentAsString(); hEmployee.Wage = xmlIn.ReadElementContentAsDecimal(); hEmployee.Hours = xmlIn.ReadElementContentAsDecimal(); list.Add(hEmployee); } else if (sEmployee.Tag == "CommissionEmployee") { CommissionEmployee employee = new CommissionEmployee(); xmlIn.ReadStartElement("Employee"); employee.FirstName = xmlIn.ReadElementContentAsString(); employee.LastName = xmlIn.ReadElementContentAsString(); employee.SocialSecurityNumber = xmlIn.ReadElementContentAsString(); employee.GrossSales = xmlIn.ReadElementContentAsDecimal(); employee.CommissionRate = xmlIn.ReadElementContentAsDecimal(); list.Add(employee); } else if (sEmployee.Tag == "BasePlusCommissionEmployee") { BasePlusCommissionEmployee employee = new BasePlusCommissionEmployee(); xmlIn.ReadStartElement("Employee"); employee.FirstName = xmlIn.ReadElementContentAsString(); employee.LastName = xmlIn.ReadElementContentAsString(); employee.SocialSecurityNumber = xmlIn.ReadElementContentAsString(); employee.GrossSales = xmlIn.ReadElementContentAsDecimal(); employee.CommissionRate = xmlIn.ReadElementContentAsDecimal(); employee.BaseSalary = xmlIn.ReadElementContentAsDecimal(); list.Add(employee); } }while (xmlIn.ReadToNextSibling("Employee")); } readEndOfFile = true; } // close the XmlReader object xmlIn.Close(); }
public static List <Provider> ParseManifest(XmlReader reader, string fileName = null) { var ret = new List <Provider>(); if (reader.ReadToDescendant("events")) { using (var events = reader.ReadSubtree()) { if (events.ReadToDescendant("provider")) { do { ret.Add(new Provider(reader, fileName)); } while (events.ReadToNextSibling("provider")); } } } // Resolve all the localization strings that may have been used. var stringMap = new Dictionary <string, string>(); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "string") { var id = reader.GetAttribute("id"); var value = reader.GetAttribute("value"); stringMap[id] = value; } } if (0 < stringMap.Count) { foreach (var provider in ret) { if (provider.m_keywordNames != null) { for (int i = 0; i < provider.m_keywordNames.Length; i++) { Provider.Replace(ref provider.m_keywordNames[i], stringMap); } } if (provider.m_taskNames != null) { foreach (var taskId in new List <int>(provider.m_taskNames.Keys)) { var taskName = provider.m_taskNames[taskId]; if (Provider.Replace(ref taskName, stringMap)) { provider.m_taskNames[taskId] = taskName; } } } if (provider.m_opcodeNames != null) { foreach (var opcodeId in new List <int>(provider.m_opcodeNames.Keys)) { var opcodeName = provider.m_opcodeNames[opcodeId]; if (Provider.Replace(ref opcodeName, stringMap)) { provider.m_opcodeNames[opcodeId] = opcodeName; } } } foreach (Event ev in provider.Events) { ev.UpdateStrings(stringMap); } } } return(ret); }
static void Main(string[] args) { test_w_point_size(); //test_getInstance(); //test_w_knowtype(); //test_w_resolver(); lTableInfo_config tbl1 = new lTableInfo_config(); tbl1.m_tblName = "receipts"; tbl1.m_tblAlias = "Bang thu"; tbl1.m_cols = new lColInfo[] { new lColInfo { m_alias = "alias", m_field = "field", m_lookupTbl = "lookupTbl", m_type = lColInfo.lColType.text }, new lColInfo { m_alias = "col2", m_field = "field", m_lookupTbl = "lookupTbl", m_type = lColInfo.lColType.text }, }; lTableInfo_config[] tbls = new lTableInfo_config[] { tbl1 }; DataContractJsonSerializer jsonz = new DataContractJsonSerializer(typeof(lTableInfo_config[])); jsonz.WriteObject(Console.OpenStandardOutput(), tbls); lReceiptsSearchPanel panel = new lReceiptsSearchPanel(); lSearchPanel_config panel_config = (lSearchPanel_config)panel; lSearchPanel_config[] panels = new lSearchPanel_config[] { panel_config }; //jsonz = new DataContractJsonSerializer(typeof(lSearchPanel_config[])); //jsonz.WriteObject(Console.OpenStandardOutput(), panels); XmlSerializer xs = new XmlSerializer(typeof(lColInfo)); xs.Serialize(Console.OpenStandardOutput(), tbl1.m_cols[0]); //xs.Deserialize() lSearchCtrl_config[] ctrls = new lSearchCtrl_config[] { new lSearchCtrl_config { m_fieldName = "date", m_pos = new myPoint(1, 1), m_size = new mySize(1, 1) }, new lSearchCtrl_config { m_fieldName = "receipt_number", m_pos = new myPoint(1, 2), m_size = new mySize(1, 1), m_searchMatch = true } }; DataContractJsonSerializerSettings jsonsettings = new DataContractJsonSerializerSettings(); jsonz = new DataContractJsonSerializer(typeof(lSearchCtrl_config[])); jsonz.WriteObject(Console.OpenStandardOutput(), ctrls); { DataContractSerializerSettings settings = new DataContractSerializerSettings(); XmlDictionary dic = new XmlDictionary(); settings.RootName = new XmlDictionaryString(dic, "tableInfo", 1); DataContractSerializer tmpz = new DataContractSerializer(typeof(lTableInfo_config), settings); tmpz.WriteObject(Console.OpenStandardOutput(), tbl1); } DataContractSerializer xmlz = new DataContractSerializer(typeof(lTableInfo_config[])); DataContractSerializer xmlz2 = new DataContractSerializer(typeof(lSearchCtrl_config[])); string pathXml = "config.xml"; XmlDocument doc = new XmlDocument(); XmlWriter wrt; //XmlReader rd; if (!System.IO.File.Exists(pathXml)) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = "\t"; wrt = XmlWriter.Create("config.xml", settings); wrt.WriteStartElement("config"); wrt.WriteStartElement("dataPanel"); xmlz.WriteObjectContent(wrt, tbls); wrt.WriteEndElement(); wrt.WriteStartElement("searchPanel"); //xmlz2.WriteObjectContent(wrt, ctrls); //jsonz.WriteObject(wrt, ctrls); jsonz.WriteObjectContent(wrt, ctrls); wrt.WriteEndElement(); wrt.WriteEndElement(); wrt.Close(); } //doc.Load(pathXml); //XmlNode node = doc.SelectSingleNode("searchPanel"); XmlReader rd = XmlReader.Create(pathXml); rd.Read(); rd.ReadToFollowing("dataPanel"); var objs1 = xmlz.ReadObject(rd, false); rd.ReadToFollowing("searchPanel"); #if false rd.ReadToDescendant("root"); rd.MoveToContent(); rd.MoveToElement(); rd.ReadEndElement(); rd.Skip(); Console.WriteLine(rd.Name); var objs = jsonz.ReadObject(rd); #else var objs = jsonz.ReadObject(rd, false); #endif //XmlNode node = doc.FirstChild; //doc.SelectSingleNode("dataPanel"); }
public static List <PropTO> ReadSiblings(XmlReader reader) { List <PropTO> list = new List <PropTO>(); bool found = reader.ReadToDescendant(PROP); if (found) { string taskEncoding = null; string resultEncoding = null; string dataEncoding = null; do { PropTO prop = new PropTO(); reader.MoveToAttribute(KEY); prop.SetKey(reader.ReadContentAsString()); reader.MoveToContent(); /*This method reads the start tag, the contents of the element, and moves the reader past * the end element tag. It expands entities and ignores processing instructions and comments. * The element can only contain simple content. That is, it cannot have child elements. */ if (resultEncoding != null && PropTO.KEY_RESULT.Equals(prop.GetKey())) { prop.SetEncoding(resultEncoding); } if (taskEncoding != null && PropTO.KEY_TASK.Equals(prop.GetKey())) { prop.SetEncoding(taskEncoding); } if (dataEncoding != null && PropTO.KEY_DATA.Equals(prop.GetKey())) { prop.SetEncoding(dataEncoding); } if (resultEncoding == null && PropTO.KEY_RESULT.Equals(prop.GetKey()) || taskEncoding == null && PropTO.KEY_TASK.Equals(prop.GetKey()) || dataEncoding == null && PropTO.KEY_DATA.Equals(prop.GetKey())) { // Expect subtags like "<A><B>Hello</B></A>" string tmp = reader.ReadInnerXml(); tmp = tmp.Trim(); if (tmp.StartsWith("<![CDATA[")) { // strip CDATA token tmp = tmp.Substring("<![CDATA[".Length); if (tmp.EndsWith("]]>")) { tmp = tmp.Substring(0, tmp.Length - "]]>".Length); } } else { tmp = org.xmlBlaster.util.XmlBuffer.UnEscape(tmp); } //XmlReader nestedReader = reader.ReadSubtree(); //tmp = reader.ReadString(); is empty if contains tags //tmp = reader.Value; is empty if contains tags prop.SetValue(tmp); } else { string val = reader.ReadElementContentAsString(); val = org.xmlBlaster.util.XmlBuffer.UnEscape(val); prop.SetValue(val); } // Check if base64 encoded (this tag is a previous sibling before the content prop) if (PropTO.KEY_ENCODING.Equals(prop.GetKey())) { taskEncoding = prop.GetValueRaw(); } if (PropTO.KEY_RESULTENCODING.Equals(prop.GetKey())) { resultEncoding = prop.GetValueRaw(); } if (PropTO.KEY_DATAENCODING.Equals(prop.GetKey())) { dataEncoding = prop.GetValueRaw(); } list.Add(prop); } while (PROP.Equals(reader.LocalName));//reader.ReadToNextSibling(PROP)); } return(list); }
//Ideally this should be done outside of the main thread, or in some async way that won't hold up the game thread public void Load(string url, string user, string password) { Items = new List <MediaFeedItem>(); XmlReaderSettings settings = new XmlReaderSettings { NameTable = new NameTable() }; XmlNamespaceManager xmlns = new XmlNamespaceManager(settings.NameTable); xmlns.AddNamespace("media", @"http://search.yahoo.com/mrss/"); XmlParserContext context = new XmlParserContext(null, xmlns, string.Empty, XmlSpace.Default); if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(password)) { XmlUrlResolver resolver = new XmlUrlResolver(); resolver.Credentials = new System.Net.NetworkCredential(user, password); settings.XmlResolver = resolver; } using (XmlReader reader = XmlReader.Create(url, settings, context)) { for (int i = 0; i < 9; i++) { if (reader.ReadToFollowing("item")) { MediaFeedItem item = new MediaFeedItem(); Items.Add(item); if (reader.ReadToFollowing("title")) { item.Title = reader.ReadElementContentAsString(); } if (reader.ReadToFollowing("description")) { item.Description = reader.ReadElementContentAsString(); } if (reader.ReadToFollowing("media:content")) { reader.MoveToFirstAttribute(); item.ContentType = reader.Value; reader.MoveToNextAttribute(); item.ContentURL = reader.Value; reader.MoveToContent(); if (reader.ReadToDescendant("media:keywords")) { item.Keywords = reader.ReadElementContentAsString(); } if (reader.ReadToNextSibling("media:thumbnail")) { item.ThumbnailURL = reader.ReadElementContentAsString(); } } } else { break; } } reader.Close(); } }
// TODO: adopt for retrieval of information for protection, deletion, etc. internal PageInfo(string xml) { XmlReader xr = XmlReader.Create(new StringReader(xml)); string normalisedFrom = null, redirectFrom = null; XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); var redirects = doc.GetElementsByTagName("r"); if (redirects.Count >= 1) //We have redirects { if (redirects[0].Attributes["from"].Value == redirects[redirects.Count - 1].Attributes["to"].Value) { //Redirect loop TitleChangedStatus = PageTitleStatus.RedirectLoop; OriginalTitle = Title = redirects[0].Attributes["from"].Value; Exists = true; Text = ""; return; //We're not going to have any page text } redirectFrom = redirects[0].Attributes["from"].Value; //Valid redirects TitleChangedStatus = redirects.Count == 1 ? PageTitleStatus.Redirected : PageTitleStatus.MultipleRedirects; } else { TitleChangedStatus = PageTitleStatus.NoChange; } if (!xr.ReadToFollowing("page")) { throw new Exception("Cannot find <page> element"); } //Normalised before redirect, so would be root. Could still be multiple redirects, or looped var normalised = doc.GetElementsByTagName("n"); if (normalised.Count > 0) { normalisedFrom = normalised[0].Attributes["from"].Value; if (TitleChangedStatus == PageTitleStatus.NoChange) { TitleChangedStatus = PageTitleStatus.Normalised; } else { TitleChangedStatus |= PageTitleStatus.Normalised; } } //Normalisation occurs before redirection, so if that exists, that is the title passed to the API if (!string.IsNullOrEmpty(normalisedFrom)) { OriginalTitle = normalisedFrom; } else if (!string.IsNullOrEmpty(redirectFrom)) { OriginalTitle = redirectFrom; } Exists = (xr.GetAttribute("missing") == null); //if null, page exists IsWatched = (xr.GetAttribute("watched") != null); EditToken = xr.GetAttribute("edittoken"); TokenTimestamp = xr.GetAttribute("starttimestamp"); long revId; RevisionID = long.TryParse(xr.GetAttribute("lastrevid"), out revId) ? revId : -1; Title = xr.GetAttribute("title"); NamespaceID = int.Parse(xr.GetAttribute("ns")); if (xr.ReadToDescendant("protection") && !xr.IsEmptyElement) { foreach (XmlNode xn in doc.GetElementsByTagName("pr")) { switch (xn.Attributes["type"].Value) { case "edit": EditProtection = xn.Attributes["level"].Value; break; case "move": MoveProtection = xn.Attributes["level"].Value; break; case "create": CreateProtection = xn.Attributes["level"].Value; break; } } } xr.ReadToFollowing("revisions"); xr.ReadToDescendant("rev"); Timestamp = xr.GetAttribute("timestamp"); Text = Tools.ConvertToLocalLineEndings(xr.ReadString()); }
/// <summary> /// Deserialized an XML response into an instance of this object. /// </summary> /// <param name="reader">An XmlReader object.</param> public void ReadXml(XmlReader reader) { reader.MoveToFirstAttribute(); do { switch (reader.Name) { case "id": this.id = reader.ReadContentAsString(); break; case "type": this.type = reader.ReadContentAsString(); break; case "userDefined": this.userDefined = reader.ReadContentAsBoolean(); break; case "visible": this.visible = reader.ReadContentAsBoolean(); break; case "editable": this.editable = reader.ReadContentAsBoolean(); break; } } while (reader.MoveToNextAttribute()); List <string> values = new List <string>(); List <RelationLink> links = new List <RelationLink>(); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case "values": reader.ReadToDescendant("value"); values.Add(reader.ReadString()); break; case "value": values.Add(reader.ReadString()); break; case "name": this.name = reader.ReadString(); break; case "link": case "links": if (reader.Name == "links") { reader.ReadToDescendant("link"); } RelationLink link = new RelationLink(); reader.MoveToFirstAttribute(); link.Rel = "self"; while (reader.MoveToNextAttribute()) { if (reader.Name == "href") { link.URL = reader.ReadContentAsString(); } else if (reader.Name == "rel") { link.Rel = reader.ReadContentAsString(); } } links.Add(link); break; } } else if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "metadataField") { reader.Read(); break; } } this.values = values.ToArray(); this.links = new RelationLink[] { }; }
public static IEnumerable <XElement> StreamElements(XmlReader reader, string[] elementNames) { if (elementNames.Length == 1) { string elementName = elementNames[0]; if (elementName == "*") { bool isEmpty = reader.IsEmptyElement; reader.ReadStartElement(); if (isEmpty == false) { do { // Read document till next element reader.MoveToContent(); if (reader.NodeType == XmlNodeType.Element) { // Empty element? isEmpty = reader.IsEmptyElement; // Decode child element XElement el = XElement.ReadFrom(reader) as XElement; if (el != null) { yield return(el); } reader.MoveToContent(); } else if (reader.NodeType == XmlNodeType.Text) { reader.Skip(); // Skip text } } while (reader.NodeType != XmlNodeType.EndElement); } } else { while (reader.ReadToFollowing(elementName)) { yield return((XElement)XNode.ReadFrom(reader)); } } } else { string elementName = elementNames[0]; if (elementName == "*") { bool isEmpty = reader.IsEmptyElement; reader.ReadStartElement(); if (isEmpty == false) { do { // Read document till next element reader.MoveToContent(); if (reader.NodeType == XmlNodeType.Element) { // Empty element? isEmpty = reader.IsEmptyElement; foreach (var i in StreamElements(reader, elementNames.Skip(1).ToArray())) { yield return(i); } reader.MoveToContent(); } else if (reader.NodeType == XmlNodeType.Text) { reader.Skip(); // Skip text } } while (reader.NodeType != XmlNodeType.EndElement); } } else { while (reader.ReadToDescendant(elementName)) { foreach (var i in StreamElements(reader, elementNames.Skip(1).ToArray())) { yield return(i); } } } } }
//[Variation("Read on descendant with same names", Priority = 1, Params = new object[] { "NNS" })] //[Variation("Read on descendant with same names", Priority = 1, Params = new object[] { "DNS" })] //[Variation("Read on descendant with same names", Priority = 1, Params = new object[] { "NS" })] public void v3() { string type = Variation.Params[0].ToString(); XmlReader DataReader = GetReader(new StringReader(_xmlStr)); PositionOnElement(DataReader, "root"); // Doing a sequential read. switch (type) { case "NNS": DataReader.ReadToDescendant("elem"); int depth = DataReader.Depth; if (DataReader.HasAttributes) { TestLog.WriteLine("Positioned on wrong element"); throw new TestException(TestResult.Failed, ""); } TestLog.Compare(DataReader.ReadToDescendant("elem"), false, "There are no more descendants"); TestLog.Compare(DataReader.NodeType, XmlNodeType.EndElement, "Wrong node type"); while (DataReader.Read()) { ; } DataReader.Dispose(); return; case "DNS": DataReader.ReadToDescendant("elem", "elem"); if (DataReader.HasAttributes) { if (DataReader.GetAttribute("xmlns") == null) { TestLog.WriteLine("Positioned on wrong element, not on DNS"); throw new TestException(TestResult.Failed, ""); } } TestLog.Compare(DataReader.ReadToDescendant("elem", "elem"), false, "There are no more descendants"); TestLog.Compare(DataReader.NodeType, XmlNodeType.EndElement, "Wrong node type"); while (DataReader.Read()) { ; } DataReader.Dispose(); return; case "NS": DataReader.ReadToDescendant("e:elem"); if (DataReader.HasAttributes) { if (DataReader.GetAttribute("xmlns:e") == null) { TestLog.WriteLine("Positioned on wrong element, not on DNS"); throw new TestException(TestResult.Failed, ""); } } TestLog.Compare(DataReader.ReadToDescendant("e:elem"), false, "There are no more descendants"); TestLog.Compare(DataReader.NodeType, XmlNodeType.EndElement, "Wrong node type"); while (DataReader.Read()) { ; } DataReader.Dispose(); return; default: throw new TestFailedException("Error in Test type"); } }
internal static PSSessionConfigurationData Create(string configurationData) { PSSessionConfigurationData configuration = new PSSessionConfigurationData(); if (string.IsNullOrEmpty(configurationData)) { return(configuration); } configurationData = Unescape(configurationData); XmlReaderSettings readerSettings = new XmlReaderSettings { CheckCharacters = false, IgnoreComments = true, IgnoreProcessingInstructions = true, MaxCharactersInDocument = 10000, XmlResolver = null, ConformanceLevel = ConformanceLevel.Fragment }; using (XmlReader reader = XmlReader.Create(new StringReader(configurationData), readerSettings)) { // read the header <SessionConfigurationData> if (reader.ReadToFollowing(SessionConfigToken)) { bool isParamFound = reader.ReadToDescendant(ParamToken); while (isParamFound) { if (!reader.MoveToAttribute(NameToken)) { throw PSTraceSource.NewArgumentException(configurationData, RemotingErrorIdStrings.NoAttributesFoundForParamElement, NameToken, ValueToken, ParamToken); } string optionName = reader.Value; if (string.Equals(optionName, PrivateDataToken, StringComparison.OrdinalIgnoreCase)) { // this is a PrivateData element which we // need to process if (reader.ReadToFollowing(PrivateDataToken)) { string privateData = reader.ReadOuterXml(); AssertValueNotAssigned(PrivateDataToken, configuration._privateData); configuration._privateData = privateData; } } else { if (!reader.MoveToAttribute(ValueToken)) { throw PSTraceSource.NewArgumentException(configurationData, RemotingErrorIdStrings.NoAttributesFoundForParamElement, NameToken, ValueToken, ParamToken); } string optionValue = reader.Value; configuration.Update(optionName, optionValue); } // move to next Param token. isParamFound = reader.ReadToFollowing(ParamToken); } } } configuration.CreateCollectionIfNecessary(); return(configuration); }
//[Variation("Simple positive test", Priority = 0, Params = new object[] { "NNS" })] //[Variation("Simple positive test", Priority = 0, Params = new object[] { "DNS" })] //[Variation("Simple positive test", Priority = 0, Params = new object[] { "NS" })] public void v() { string type = Variation.Params[0].ToString(); XmlReader DataReader = GetReader(new StringReader(_xmlStr)); PositionOnElement(DataReader, "root"); switch (type) { case "NNS": DataReader.ReadToDescendant("elem"); if (DataReader.HasAttributes) { TestLog.WriteLine("Positioned on wrong element"); TestLog.WriteIgnore(DataReader.ReadInnerXml() + "\n"); throw new TestException(TestResult.Failed, ""); } while (DataReader.Read()) { ; } DataReader.Dispose(); return; case "DNS": DataReader.ReadToDescendant("elem", "elem"); if (DataReader.HasAttributes) { if (DataReader.GetAttribute("xmlns") == null) { TestLog.WriteLine("Positioned on wrong element, not on DNS"); throw new TestException(TestResult.Failed, ""); } } while (DataReader.Read()) { ; } DataReader.Dispose(); return; case "NS": DataReader.ReadToDescendant("e:elem"); if (DataReader.HasAttributes) { if (DataReader.GetAttribute("xmlns:e") == null) { TestLog.WriteLine("Positioned on wrong element, not on NS"); throw new TestException(TestResult.Failed, ""); } } while (DataReader.Read()) { ; } DataReader.Dispose(); return; default: throw new TestFailedException("Error in Test type"); } }
/// <summary> /// Reads a specific data tag from the xml document. /// </summary> /// <param name='reader'> /// Reader. /// </param> private void ReadData(XmlReader reader) { //If these values are not being set, //something is wrong. string key = "ERROR"; string value = "ERROR"; if (reader.HasAttributes) { while (reader.MoveToNextAttribute()) { if (reader.Name == "name") { key = reader.Value; } } } //Move back to the element reader.MoveToElement(); //Read the child nodes if (reader.ReadToDescendant("value")) { do { value = reader.ReadString(); } while (reader.ReadToNextSibling("value")); } //Add the raw values to the dictionary textDataBase.Add(key, value); //Add the localized parsed values to the localizedObjectDataBase LocalizedObject newLocalizedObject = new LocalizedObject(); newLocalizedObject.ObjectType = LocalizedObject.GetLocalizedObjectType(key); newLocalizedObject.TextValue = value; localizedObjectDataBase.Add(LocalizedObject.GetCleanKey(key,newLocalizedObject.ObjectType), newLocalizedObject); }
protected virtual void LoadStatus (XmlReader reader) { reader.ReadToFollowing ("Status"); reader.ReadToDescendant ("HP"); HP = reader.ReadElementContentAsInt (); }