public void SmartTagProperties() { //ExStart //ExFor:CustomXmlProperty.Uri //ExFor:CustomXmlPropertyCollection //ExFor:CustomXmlPropertyCollection.Add(CustomXmlProperty) //ExFor:CustomXmlPropertyCollection.Clear //ExFor:CustomXmlPropertyCollection.Contains(String) //ExFor:CustomXmlPropertyCollection.Count //ExFor:CustomXmlPropertyCollection.GetEnumerator //ExFor:CustomXmlPropertyCollection.IndexOfKey(String) //ExFor:CustomXmlPropertyCollection.Item(Int32) //ExFor:CustomXmlPropertyCollection.Item(String) //ExFor:CustomXmlPropertyCollection.Remove(String) //ExFor:CustomXmlPropertyCollection.RemoveAt(Int32) //ExSummary: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 + "SmartTags.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(); //ExEnd }
public void Properties() { //ExStart //ExFor:CustomXmlProperty.Uri //ExFor:CustomXmlPropertyCollection //ExFor:CustomXmlPropertyCollection.Add(CustomXmlProperty) //ExFor:CustomXmlPropertyCollection.Clear //ExFor:CustomXmlPropertyCollection.Contains(String) //ExFor:CustomXmlPropertyCollection.Count //ExFor:CustomXmlPropertyCollection.GetEnumerator //ExFor:CustomXmlPropertyCollection.IndexOfKey(String) //ExFor:CustomXmlPropertyCollection.Item(Int32) //ExFor:CustomXmlPropertyCollection.Item(String) //ExFor:CustomXmlPropertyCollection.Remove(String) //ExFor:CustomXmlPropertyCollection.RemoveAt(Int32) //ExSummary:Shows how to work with smart tag properties to get in depth information about smart tags. Document doc = new Document(MyDir + "Smart tags.doc"); // A smart tag appears in a document with Microsoft Word recognizes a part of its text as some form of data, // such as a name, date, or address, and converts it to a hyperlink that displays a purple dotted underline. // In Word 2003, we can enable smart tags via "Tools" -> "AutoCorrect options..." -> "SmartTags". // In our input document, there are three objects that Microsoft Word registered as smart tags. // Smart tags may be nested, so this collection contains more. SmartTag[] smartTags = doc.GetChildNodes(NodeType.SmartTag, true).OfType <SmartTag>().ToArray(); Assert.AreEqual(8, smartTags.Length); // The "Properties" member of a smart tag contains its metadata, which will be different for each type of smart tag. // The properties of a "date"-type smart tag contain its year, month, and day. CustomXmlPropertyCollection properties = smartTags[7].Properties; 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 properties in various ways, such 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")); // Below are three ways of removing elements from the properties collection. // 1 - Remove by index: properties.RemoveAt(3); Assert.AreEqual(3, properties.Count); // 2 - Remove by name: properties.Remove("Year"); Assert.AreEqual(2, properties.Count); // 3 - Clear the entire collection at once: properties.Clear(); Assert.AreEqual(0, properties.Count); //ExEnd }