コード例 #1
0
ファイル: Document.cs プロジェクト: 0000duck/latino
 public void ReadXml(XmlReader reader)
 {
     Utils.ThrowException(reader == null ? new ArgumentNullException("reader") : null);
     mAnnotations.Clear();
     mFeatures.Clear();
     mText = mName = "";
     while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Document"))
     {
         if (reader.NodeType == XmlNodeType.Element && reader.Name == "Name")
         {
             mName = Utils.XmlReadValue(reader, "Name");
         }
         else if (reader.NodeType == XmlNodeType.Element && reader.Name == "Text")
         {
             mText = Utils.XmlReadValue(reader, "Text");
         }
         else if (reader.NodeType == XmlNodeType.Element && reader.Name == "Annotation" && !reader.IsEmptyElement)
         {
             int    spanStart = 0;
             int    spanEnd   = 0;
             string annotType = "not set";
             int    annotId   = -1;
             ArrayList <Pair <string, string> > features = new ArrayList <Pair <string, string> >();
             while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Annotation"))
             {
                 if (reader.NodeType == XmlNodeType.Element && reader.Name == "SpanStart")
                 {
                     spanStart = Convert.ToInt32(Utils.XmlReadValue(reader, "SpanStart"));
                 }
                 else if (reader.NodeType == XmlNodeType.Element && reader.Name == "SpanEnd")
                 {
                     spanEnd = Convert.ToInt32(Utils.XmlReadValue(reader, "SpanEnd"));
                 }
                 else if (reader.NodeType == XmlNodeType.Element && reader.Name == "Type")
                 {
                     annotType = Utils.XmlReadValue(reader, "Type");
                 }
                 else if (reader.NodeType == XmlNodeType.Element && reader.Name == "Type")
                 {
                     annotType = Utils.XmlReadValue(reader, "Type");
                 }
                 else if (reader.NodeType == XmlNodeType.Element && reader.Name == "Feature" && !reader.IsEmptyElement)
                 {
                     string featName = "not set";
                     string featVal  = "";
                     while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Feature"))
                     {
                         if (reader.NodeType == XmlNodeType.Element && reader.Name == "Name")
                         {
                             featName = Utils.XmlReadValue(reader, "Name");
                         }
                         else if (reader.NodeType == XmlNodeType.Element && reader.Name == "Value")
                         {
                             featVal = Utils.XmlReadValue(reader, "Value");
                         }
                     }
                     features.Add(new Pair <string, string>(featName, featVal));
                 }
             }
             Annotation annot = new Annotation(spanStart, spanEnd, annotType);
             AddAnnotation(annot);
             foreach (Pair <string, string> feature in features)
             {
                 annot.Features.SetFeatureValue(feature.First, feature.Second);
             }
         }
         else if (reader.NodeType == XmlNodeType.Element && reader.Name == "Feature" && !reader.IsEmptyElement)
         {
             string featName = "not set";
             string featVal  = "";
             while (reader.Read() && !(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Feature"))
             {
                 if (reader.NodeType == XmlNodeType.Element && reader.Name == "Name")
                 {
                     featName = Utils.XmlReadValue(reader, "Name");
                 }
                 else if (reader.NodeType == XmlNodeType.Element && reader.Name == "Value")
                 {
                     featVal = Utils.XmlReadValue(reader, "Value");
                 }
             }
             Features.SetFeatureValue(featName, featVal);
         }
     }
 }