Get the number in a list

Is there a way to find the number of an item in a list? In VSTO, it was done like this:

foreach (Word.Pargraph para in ActiveDocument.Paragraphs)
{
    Word.Range rng = para.Range
    string listNumber = rng.ListFormat.ListString //This is the value I want with the string of the list item
}

I tried doing that in Aspose, but I can’t find the equivalent:

NodeCollection nodeColl = doc.GetChildNodes(NodeType.Paragraph, true);
for (int i = 0; i <nodeColl.Count; i++)
{
    Paragraph para = (Paragraph) nodeColl[i];
    if (para.IsListItem)
    {
        // Need something here to get the string of the list item.
    }
}

Thanks in advance for any advice,

Daniel

Hi Daniel,

Thanks for your inquiry. Sure, the following code example shows how to extract the label of each paragraph in a list as a value or a string.

Document doc = new Document(@"C:\Temp\Listed 1. docx ");
doc.UpdateListLabels(); int listParaCount = 1; foreach (Paragraph paragraph in doc.GetChildNodes(NodeType.Paragraph, true))
{
    // Find if we have the paragraph list. In our document our list uses plain arabic numbers,
    // which start at three and ends at six.
    if (paragraph.ListFormat.IsListItem)
    {
        Console.WriteLine("Paragraph #{0}", listParaCount);
        // This is the text we get when actually getting when we output this node to text format.
        // The list labels are not included in this text output. Trim any paragraph formatting characters.
        string paragraphText = paragraph.ToString(SaveFormat.Text).Trim();
        Console.WriteLine("Exported Text: " + paragraphText);
        ListLabel label = paragraph.ListLabel;
        // This gets the position of the paragraph in current level of the list. If we have a list with multiple level then this
        // will tell us what position it is on that particular level.
        Console.WriteLine("Numerical Id: " + label.LabelValue);
        // Combine them together to include the list label with the text in the output.
        Console.WriteLine("List label combined with text: " + label.LabelString + " " + paragraphText);
        listParaCount++;
    }
}

I hope, this helps.

Best regards,

Hi Awais,

This is excellent and just what I wanted. Thank you.

One question: Does the UpdateListLabels method change anything in the document?

Best wishes,

Daniel

Hi Daniel,

Thanks for your inquiry. No, Document.UpdateListLabels method only updates list labels for all list items in the document i.e. it updates list label properties such as LabelValue and LabelString for each ListLabel object in the document.

Best regards,