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); }