CustomXmlPropertyCollectionGetEnumerator Method

Returns an enumerator object that can be used to iterate over all items in the collection.

Namespace:  Aspose.Words.Markup
Assembly:  Aspose.Words (in Aspose.Words.dll) Version: 20.3
Syntax
public IEnumerator<CustomXmlProperty> GetEnumerator()

Return Value

Type: IEnumeratorCustomXmlProperty

Implements

IEnumerableTGetEnumerator
Examples
Shows how to work with smart tag properties to get in depth information about smart tags.
// Open a document that contains smart tags and their collection
Document doc = new Document(MyDir + "Smart tags.doc");

// Smart tags are an older Microsoft Word feature that can automatically detect and tag
// any parts of the text that it registers as commonly used information objects such as names, addresses, stock tickers, dates etc
// In Word 2003, smart tags can be turned on in Tools > AutoCorrect options... > SmartTags tab
// In our input document there are three objects that were registered as smart tags, but since they can be nested, we have 8 in this collection
NodeCollection smartTags = doc.GetChildNodes(NodeType.SmartTag, true);
Assert.AreEqual(8, smartTags.Count);

// The last smart tag is of the "Date" type, which we will retrieve here
SmartTag smartTag = (SmartTag)smartTags[7];

// The Properties attribute, for some smart tags, elaborates on the text object that Word picked up as a smart tag
// In the case of our "Date" smart tag, its properties will let us know the year, month and day within the smart tag
CustomXmlPropertyCollection properties = smartTag.Properties;

// We can enumerate over the collection and print the aforementioned properties to the console
Assert.AreEqual(4, properties.Count);

using (IEnumerator<CustomXmlProperty> enumerator = properties.GetEnumerator())
{
    while (enumerator.MoveNext())
    {
        Console.WriteLine($"Property name: {enumerator.Current.Name}, value: {enumerator.Current.Value}");
        Assert.AreEqual("", enumerator.Current.Uri);
    }
}

// We can also access the elements in various ways, including as a key-value pair
Assert.True(properties.Contains("Day"));
Assert.AreEqual("22", properties["Day"].Value);
Assert.AreEqual("2003", properties[2].Value);
Assert.AreEqual(1, properties.IndexOfKey("Month"));

// We can also remove elements by name, index or clear the collection entirely
properties.RemoveAt(3);
properties.Remove("Year");
Assert.AreEqual(2, (properties.Count));

properties.Clear();
Assert.AreEqual(0, (properties.Count));

// We can remove the entire smart tag like this
smartTag.Remove();
See Also