Thanks for your inquiry.
You can still achieve this fairly easily by implementing your own visitor which visits paragraphs in the documents and builds HTML lists from these. Please see the code below which demonstrates this. You just need to pass one of the paragraphs belonging to the list you want to extract and the entire list will be extracted to HTML.
string listHtml = ListVisitor.ExtractAsHtml(doc.FirstSection.Body.FirstParagraph);
public class ListVisitor
: DocumentVisitor
{
private int mListId = -1;
private int mCurrentLevel = -1;
private Paragraph mPreviousListItem;
private StringBuilder mHtmlBuilder = new StringBuilder();
private
ListVisitor(int listId)
{
mListId = listId;
}
public static string
ExtractAsHtml(Paragraph para)
{
if(!para.IsListItem)
throw
new ArgumentException("Paragraph must be a list item");
ListVisitor
visitor = new ListVisitor(para.ListFormat.List.ListId);
para.Document.Accept(visitor);
return
visitor.mHtmlBuilder.ToString();
}
public override VisitorAction
VisitParagraphStart(Paragraph paragraph)
{
if (IsListItem(paragraph))
{
CheckAndAddListTags(paragraph.ListFormat);
mHtmlBuilder.Append("");
mHtmlBuilder.Append(paragraph.ToTxt().Trim());
mHtmlBuilder.AppendLine("");
mPreviousListItem = paragraph;
}
return VisitorAction.Continue;
}
public override VisitorAction
VisitDocumentEnd(Document doc)
{
mCurrentLevel++;
CheckAndAddListTags(mPreviousListItem.ListFormat);
return VisitorAction.Continue;
}
private bool IsListItem(Paragraph
para)
{
return
para.IsListItem && para.ListFormat.List.ListId == mListId;
}
private bool IsOrderedList(ListLevel
listLevel)
{
return
listLevel.NumberStyle != NumberStyle.Bullet;
}
private void CheckAndAddListTags(ListFormat
format)
{
if
(format.ListLevelNumber > mCurrentLevel)
mHtmlBuilder.AppendLine(IsOrderedList(format.ListLevel) ? ""
: ");
else if (format.ListLevelNumber < mCurrentLevel)
mHtmlBuilder.AppendLine(IsOrderedList(mPreviousListItem.ListFormat.ListLevel)
? "" : "");
mCurrentLevel = format.ListLevelNumber;
}
}