private void _createFromOldFormat(XElement elementXML) { Debug.Assert(elementXML.Attribute(Consts.AttWordId) != null); Id = elementXML.Attribute(Consts.AttWordId).Value; // TODO: определить ElementType // ChildTreeInit // вершиной дерева всегда будет ID слова ChildWordsIds.AddChild(Id); // Order var orderNodeName = XName.Get(Consts.NodeWordOrder); Debug.Assert(elementXML.Element(orderNodeName) != null); Order = int.Parse(elementXML.Element(orderNodeName).Value); // Position - only in LWS var positionNodeName = XName.Get(Consts.NodeWordPosition); if (elementXML.Element(positionNodeName) != null) Position = int.Parse(elementXML.Element(Consts.NodeWordPosition).Value); else Position = -1; // Text var textNodeName = XName.Get(Consts.NodeWordText); if (elementXML.Element(textNodeName) != null) Text = elementXML.Element(textNodeName).Value; else Text = ""; // Syntactic Role var syntacticRoleNodeName = XName.Get(Consts.NodeSyntacticRole); if (elementXML.Element(syntacticRoleNodeName) != null) SyntacticRole = SyntacticRole.ReadFromString(elementXML.Element(syntacticRoleNodeName).Value); else SyntacticRole = SyntacticRole.Undefined; // Surface slot if (elementXML.Element(Consts.NodeSurfaceSlot) != null) SurfaceSlot = SurfaceSlot.ReadFromString(elementXML.Element(Consts.NodeSurfaceSlot).Value); else SurfaceSlot = SurfaceSlot.Undefined; // grammar info if (elementXML.Element(Consts.NodeGrammarInfo) != null) GrammarInfo = new GrammarInfo(elementXML.Element(Consts.NodeGrammarInfo)); else { GrammarInfo = new GrammarInfo(); GrammarInfo.Case = GrammarInfoCase.Undefined; GrammarInfo.PartOfSpeech = GrammarInfoPartOfSpeech.Undefined; } // is restored if (elementXML.Element(Consts.NodeIsRestored) != null) { if (elementXML.Element(Consts.NodeIsRestored).Value == Consts.ValueTrue) IsRestored = true; else IsRestored = false; } else IsRestored = false; //is word IsWord = elementXML.Attribute("type").Value == "Word"; // syntactic parent id if (elementXML.Element(Consts.NodeSyntacticParent) != null) SyntacticParentWordId = elementXML.Element(Consts.NodeSyntacticParent).Attribute(Consts.AttWithWordId).Value; else SyntacticParentWordId = "-1"; // controller nodes if (elementXML.Element(Consts.NodeHasController) != null) { foreach (var controllerItemXML in elementXML.Elements(Consts.NodeHasController)) ControllerNodes.Add(new Controller(controllerItemXML)); } // conjucted with if (elementXML.Element(Consts.NodeConjuctedWith) != null) ConjuctedWithId = elementXML.Element(Consts.NodeConjuctedWith).Attribute(Consts.AttWithWordId).Value; else ConjuctedWithId = "-1"; // semantic info SemanticInfo = new SemanticInfo(elementXML.Element(Consts.NodeSemanticInfo)); }
private void _createFromAPIFormat(XElement elementXML, bool useNamespaces) { // смотрим что обрабатываем - слово или знак препинания var elementNode = elementXML.Element(XName.Get(Consts.NodeWord, Namespaces.NamespaceLinguistic)); if (elementNode != null) ElementType = ComprenoSentenceElementType.ReadFromString(elementNode.Name.LocalName); else { elementNode = elementXML.Element(XName.Get(Consts.NodePunctuator, useNamespaces ? Namespaces.NamespaceLinguistic : "")); if (elementNode != null) ElementType = ComprenoSentenceElementType.ReadFromString(elementNode.Element(XName.Get(Consts.NodePunctuatorType, useNamespaces ? Namespaces.NamespaceLinguistic : "")).Attribute(XName.Get(Consts.AttResourse, useNamespaces ? Namespaces.NamespaceRDF : "")).Value); } Debug.Assert(elementNode != null); Id = elementNode.Attribute(XName.Get(Consts.AttElementNodeId, useNamespaces ? Namespaces.NamespaceRDF : "")).Value; // проваливаемся на 1 уровень ниже - на нем располагаются все свойства elementXML = elementNode; var nodeIdName = XName.Get(Consts.AttElementNodeId, useNamespaces ? Namespaces.NamespaceRDF : ""); // ChildTreeInit // вершиной дерева всегда будет ID слова ChildWordsIds.AddChild(Id); // Order var orderNodeName = XName.Get(Consts.NodeWordOrder, useNamespaces ? Namespaces.NamespaceLinguistic : ""); Debug.Assert(elementXML.Element(orderNodeName) != null); Order = int.Parse(elementXML.Element(orderNodeName).Value); // Text var textNodeName = XName.Get(Consts.NodeWordText, useNamespaces ? Namespaces.NamespaceLinguistic : ""); if (elementXML.Element(textNodeName) != null) Text = elementXML.Element(textNodeName).Value; else Text = ""; // Lemma var lemmaNodeName = XName.Get(Consts.NodeLemmaName, useNamespaces ? Namespaces.NamespaceLinguistic : ""); if (elementXML.Element(lemmaNodeName) != null) Lemma = elementXML.Element(lemmaNodeName).Value; else Lemma = ""; // Syntactic Role var syntacticRoleNodeName = XName.Get(Consts.NodeSyntacticRole, useNamespaces ? Namespaces.NamespaceLinguistic : ""); var syntacticRoleAttName = XName.Get(Consts.AttResourse, useNamespaces ? Namespaces.NamespaceRDF : ""); if (elementXML.Element(syntacticRoleNodeName) != null) SyntacticRole = SyntacticRole.ReadFromString(elementXML.Element(syntacticRoleNodeName).Attribute(syntacticRoleAttName).Value); else SyntacticRole = SyntacticRole.Undefined; // Surface slot var surfaceSlotNodeName = XName.Get(Consts.NodeSurfaceSlot, useNamespaces ? Namespaces.NamespaceLinguistic : ""); if (elementXML.Element(surfaceSlotNodeName) != null) SurfaceSlot = SurfaceSlot.ReadFromString(elementXML.Element(surfaceSlotNodeName).Value); else SurfaceSlot = SurfaceSlot.Undefined; // grammar info var grammarInfoNodeName = XName.Get(Consts.NodeGrammarInfo, useNamespaces ? Namespaces.NamespaceLinguistic : ""); if (elementXML.Element(grammarInfoNodeName) != null) GrammarInfo = new GrammarInfo(elementXML.Element(grammarInfoNodeName), useNamespaces); else GrammarInfo = new GrammarInfo(); // is restored var isRestoredNodeName = XName.Get(Consts.NodeIsRestored, useNamespaces ? Namespaces.NamespaceLinguistic : ""); if (elementXML.Element(isRestoredNodeName) != null) IsRestored = (elementXML.Element(isRestoredNodeName).Value == Consts.ValueTrue); else IsRestored = false; //is word IsWord = ComprenoSentenceElementType.IsWord(ElementType); // syntactic parent id var syntacticParentNodeName = XName.Get(Consts.NodeSyntacticParent, useNamespaces ? Namespaces.NamespaceLinguistic : ""); if (elementXML.Element(syntacticParentNodeName) != null) SyntacticParentWordId = elementXML.Element(syntacticParentNodeName).Attribute(nodeIdName).Value; else SyntacticParentWordId = "-1"; // controller nodes var controllerNodeName = XName.Get(Consts.NodeHasController, useNamespaces ? Namespaces.NamespaceLinguistic : ""); if (elementXML.Element(controllerNodeName) != null) { var singleControllerNodeName = XName.Get(Consts.NodeController, useNamespaces ? Namespaces.NamespaceLinguistic : ""); foreach (var controllerItemXML in elementXML.Element(controllerNodeName).Elements(singleControllerNodeName)) ControllerNodes.Add(new Controller(controllerItemXML, useNamespaces)); } // conjucted with var conjuctedWithNodeName = XName.Get(Consts.NodeConjuctedWith, useNamespaces ? Namespaces.NamespaceLinguistic : ""); if (elementXML.Element(conjuctedWithNodeName) != null) ConjuctedWithId = elementXML.Element(conjuctedWithNodeName).Attribute(nodeIdName).Value; else ConjuctedWithId = "-1"; // semantic info --> lexical class predefined var semanticInfoNodeName = XName.Get(Consts.NodeSemanticInfo, useNamespaces ? Namespaces.NamespaceLinguistic : ""); SemanticInfo = new SemanticInfo(elementXML.Element(semanticInfoNodeName), useNamespaces); }