private void ConsumeImport()
        {
            XmlReaderSettings settings = new XmlReaderSettings
            {
                IgnoreWhitespace = true
            };

            using XmlReader reader = XmlReader.Create(fileToImport, settings);
            while (reader.Read())
            {
                if (reader.IsStartElement())
                {
                    switch (reader.Name)
                    {
                    case "title":
                        blogName = reader.ReadElementContentAsString();
                        break;

                    case "description":
                        blogDescription = reader.ReadElementContentAsString();
                        break;

                    // TODO: refactor item, category and tag to remove repeated code
                    case "item":     // includes posts, pages, nav items and media
                        WordpressItem post = ParseItem(reader);
                        wordpressItems.Add(post);
                        break;

                    case "wp:category":
                        WordpressCategory category = ParseCategory(reader);
                        wordpressCategories.Add(category);
                        break;

                    case "wp:tag":
                        WordpressTag tag = ParseTag(reader);
                        wordpressTags.Add(tag);
                        break;

                    case "wp:author":
                    default:
                        //Console.WriteLine("Skipping node: {0}", reader.Name);
                        break;
                    }
                }
            }
        }
 private object CreateTag(WordpressTag tag)
 {
     return(new JObject(
                new JProperty("ContentItemId", $"wptag-{tag.Id.ToString()}"),
                new JProperty("ContentItemVersionId", null),
                new JProperty("ContentType", "Tag"),
                new JProperty("DisplayText", tag.Name),
                new JProperty("Latest", false),
                new JProperty("Published", false),
                new JProperty("ModifiedUtc", creationDateTime),
                new JProperty("PublishedUtc", null),
                new JProperty("CreatedUtc", null),
                new JProperty("Owner", null),
                new JProperty("Author", "WP Import"),
                new JProperty("Tag", new JObject()),
                new JProperty("TitlePart", new JObject(
                                  new JProperty("Title", tag.Name)
                                  ))
                ));
 }
        private WordpressTag ParseTag(XmlReader tagReader)
        {
            WordpressTag tag = new WordpressTag();

            while (!tagReader.EOF)
            {
                if (tagReader.IsStartElement())
                {
                    switch (tagReader.Name)
                    {
                    case "wp:term_id":
                        tag.Id = tagReader.ReadElementContentAsLong();
                        break;

                    case "wp:tag_slug":
                        tag.Slug = tagReader.ReadElementContentAsString();
                        break;

                    case "wp:tag_name":
                        tag.Name = tagReader.ReadElementContentAsString();
                        break;

                    default:
                        tagReader.Read();
                        break;
                    }
                }
                else
                {
                    tagReader.Read();
                }
                if (tagReader.Name == "wp:tag" && tagReader.NodeType == XmlNodeType.EndElement)
                {
                    // reached end node of tag
                    break;
                }
            }
            return(tag);
        }