CustomXmlPropertyCollectionGetEnumerator Method |
Namespace: Aspose.Words.Markup
// 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();