/// <summary> /// Report trace information as XML /// </summary> /// <param name="writer"></param> public void ToXml(XmlWriter writer) { writer.WriteStartElement("WordGrammarAttempt"); writer.WriteAttributeString("success", m_fSuccess ? "true" : "false"); writer.WriteStartElement("Id"); writer.WriteValue(m_id); writer.WriteEndElement(); string type = "pfx"; // try to guess morph type based on word type foreach (PcPatrMorph morph in m_morphs) { writer.WriteStartElement("morph"); string sWordType = morph.wordType; writer.WriteAttributeString("wordType", sWordType); if (type == "pfx" && sWordType == "root") type = "root"; else if (type == "root" && sWordType != "root") type = "sfx"; writer.WriteAttributeString("type", type); writer.WriteAttributeString("alloid", morph.formId); writer.WriteAttributeString("morphname", morph.msaId); writer.WriteMorphInfoElements(m_cache, morph.formId, morph.msaId, morph.wordType, morph.featureDescriptors); writer.WriteMsaElement(m_cache, morph.formId, morph.msaId, type, morph.wordType); writer.WriteInflClassesElement(m_cache, morph.formId); writer.WriteEndElement(); // morph } writer.WriteEndElement(); }
private void BuildXmlOutput(XmlWriter writer, IEnumerable<PcPatrMorph> morphs) { writer.WriteStartElement("WfiAnalysis"); writer.WriteStartElement("Morphs"); foreach (PcPatrMorph morph in morphs) { writer.WriteStartElement("Morph"); writer.WriteStartElement("MoForm"); writer.WriteAttributeString("DbRef", morph.formId); writer.WriteAttributeString("Label", morph.form); writer.WriteAttributeString("wordType", morph.wordType); writer.WriteEndElement(); writer.WriteStartElement("MSI"); writer.WriteAttributeString("DbRef", morph.msaId); writer.WriteMsaElement(m_cache, morph.formId, morph.msaId, null, morph.wordType); writer.WriteEndElement(); writer.WriteMorphInfoElements(m_cache, morph.formId, morph.msaId, morph.wordType, null); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndElement(); }