Beispiel #1
0
        public Label ReadLabel()
        {
            this.XmlReader.AssertElementStart("label");

            Label label = new Label();

            while (true)
            {
                this.XmlReader.AssertRead();

                if (this.XmlReader.IsElementEnd("label"))
                {
                    break;
                }

                if (this.XmlReader.IsElementStart("images"))
                {
                    label.Images = this.ReadImages();
                }
                else if (this.XmlReader.IsElementStart("id"))
                {
                    if (!this.XmlReader.IsEmptyElement)
                    {
                        this.XmlReader.AssertRead();
                        label.Id = int.Parse(this.XmlReader.ReadContentAsString());
                    }
                }
                else if (this.XmlReader.IsElementStart("name"))
                {
                    if (!this.XmlReader.IsEmptyElement)
                    {
                        this.XmlReader.AssertRead();
                        label.Name = this.XmlReader.ReadContentAsString();
                    }
                }
                else if (this.XmlReader.IsElementStart("contactinfo"))
                {
                    if (!this.XmlReader.IsEmptyElement)
                    {
                        this.XmlReader.AssertRead();
                        label.ContactInfo = this.XmlReader.ReadContentAsString();
                    }
                }
                else if (this.XmlReader.IsElementStart("profile"))
                {
                    if (!this.XmlReader.IsEmptyElement)
                    {
                        this.XmlReader.AssertRead();
                        label.Profile = this.XmlReader.ReadContentAsString();
                    }
                }
                else if (this.XmlReader.IsElementStart("data_quality"))
                {
                    if (!this.XmlReader.IsEmptyElement)
                    {
                        this.XmlReader.AssertRead();
                        label.DataQuality = DataReader.ParseDataQuality(this.XmlReader.ReadContentAsString());
                    }
                }
                else if (this.XmlReader.IsElementStart("urls"))
                {
                    label.Urls = this.ReadUrls();
                }
                else if (this.XmlReader.IsElementStart("sublabels"))
                {
                    label.Sublabels = this.ReadSublabels();
                }
                else if (this.XmlReader.IsElementStart("parentLabel"))
                {
                    if (!this.XmlReader.IsEmptyElement)
                    {
                        this.XmlReader.AssertRead();
                        label.ParentLabel = this.XmlReader.ReadContentAsString();
                    }
                }
                else
                {
                    this.ThrowInvalidFormatException();
                }
            }

            return label;
        }
Beispiel #2
0
        public static Label ReadLabel(XElement el)
        {
            el.AssertName("label");
            el.AssertNoAttributes();

            Label result = new Label();

            foreach (XElement e in el.Elements())
            {
                if (e.Name == "images")
                {
                    result.Images = e.Elements().Select(i => ReadImage(i)).ToArray();
                }
                else if (e.Name == "name")
                {
                    e.AssertOnlyText();
                    result.Name = e.Value;
                }
                else if (e.Name == "contactinfo")
                {
                    e.AssertOnlyText();
                    result.ContactInfo = e.Value.TrimAndNormalizeLineEndings();
                }
                else if (e.Name == "profile")
                {
                    e.AssertOnlyText();
                    result.Profile = e.Value.TrimAndNormalizeLineEndings();
                }
                else if (e.Name == "urls")
                {
                    result.Urls = e.Elements().AssertNames("url").AssertOnlyText().Select(i => e.Value).ToArray();
                }
                else if (e.Name == "sublabels")
                {
                }
                else if (e.Name == "parentLabel")
                {
                    e.AssertOnlyText();
                    result.ParentLabel = e.Value;
                }
                else if (e.Name == "releases")
                {
                    result.Releases = e.Elements().Select(release => ReadLabelRelease(release)).ToArray();
                }
                else
                {
                    throw new Exception("Unknown label element: " + e.Name);
                }
            }

            return result;
        }
Beispiel #3
0
        public Label ReadLabel(JObject source)
        {
            Label label = new Label();
            foreach (var item in source)
            {
                var v = item.Value;

                switch (item.Key)
                {
                    case "id":
                        label.Id = v.Value<int>();
                        break;
                    case "profile":
                        label.Profile = v.Value<string>();
                        break;
                    case "releases_url":
                        break;
                    case "name":
                        label.Name = v.Value<string>();
                        break;
                    case "contact_info":
                        label.ContactInfo = v.Value<string>();
                        break;
                    case "uri":
                        label.Uri = v.Value<string>();
                        break;
                    case "sublabels":
                        label.Sublabels = v.Value<JArray>().Cast<JObject>().Select(t => this.ReadSublabel(t)).ToArray();
                        break;
                    case "urls":
                        label.Urls = v.ValueAsStringArray();
                        break;
                    case "images":
                        label.Images = this.ReadImages(v.Value<JArray>());
                        break;
                    case "resource_url":
                        break;
                    case "data_quality":
                        label.DataQuality = DataReader.ParseDataQuality(v.Value<string>());
                        break;
                    default:
                        this.ThrowIfStrict("Unknown key: " + item.Key);
                        break;
                }
            }
            return label;
        }