public void StructuredDocumentTagRangeStartXmlMapping() { //ExStart //ExFor:StructuredDocumentTagRangeStart.XmlMapping //ExSummary:Shows how to set XML mappings for the range start of a structured document tag. Document doc = new Document(MyDir + "Multi-section structured document tags.docx"); // Construct an XML part that contains text and add it to the document's CustomXmlPart collection. string xmlPartId = Guid.NewGuid().ToString("B"); string xmlPartContent = "<root><text>Text element #1</text><text>Text element #2</text></root>"; CustomXmlPart xmlPart = doc.CustomXmlParts.Add(xmlPartId, xmlPartContent); Assert.AreEqual("<root><text>Text element #1</text><text>Text element #2</text></root>", Encoding.UTF8.GetString(xmlPart.Data)); // Create a structured document tag that will display the contents of our CustomXmlPart in the document. StructuredDocumentTagRangeStart sdtRangeStart = (StructuredDocumentTagRangeStart)doc.GetChild(NodeType.StructuredDocumentTagRangeStart, 0, true); // If we set a mapping for our structured document tag, // it will only display a portion of the CustomXmlPart that the XPath points to. // This XPath will point to the contents second "<text>" element of the first "<root>" element of our CustomXmlPart. sdtRangeStart.XmlMapping.SetMapping(xmlPart, "/root[1]/text[2]", null); doc.Save(ArtifactsDir + "StructuredDocumentTag.StructuredDocumentTagRangeStartXmlMapping.docx"); //ExEnd doc = new Document(ArtifactsDir + "StructuredDocumentTag.StructuredDocumentTagRangeStartXmlMapping.docx"); xmlPart = doc.CustomXmlParts[0]; Assert.True(Guid.TryParse(xmlPart.Id, out Guid temp)); Assert.AreEqual("<root><text>Text element #1</text><text>Text element #2</text></root>", Encoding.UTF8.GetString(xmlPart.Data)); sdtRangeStart = (StructuredDocumentTagRangeStart)doc.GetChild(NodeType.StructuredDocumentTagRangeStart, 0, true); Assert.AreEqual("/root[1]/text[2]", sdtRangeStart.XmlMapping.XPath); }
public static void StructuredDocumentTagRangeStartXmlMapping(string dataDir) { // ExStart:StructuredDocumentTagRangeStartXmlMapping Document doc = new Document(dataDir + "input.docx"); StructuredDocumentTagRangeStart sdtRangeStart = (StructuredDocumentTagRangeStart)doc.GetChild(NodeType.StructuredDocumentTagRangeStart, 0, true); sdtRangeStart.XmlMapping.SetMapping(doc.CustomXmlParts[0], "/Root/Element", null); doc.Save(dataDir + "output.docx"); // ExEnd:StructuredDocumentTagRangeStartXmlMapping }
public void MultiSectionTags() { //ExStart //ExFor:StructuredDocumentTagRangeStart //ExFor:StructuredDocumentTagRangeStart.Id //ExFor:StructuredDocumentTagRangeStart.Title //ExFor:StructuredDocumentTagRangeStart.IsShowingPlaceholderText //ExFor:StructuredDocumentTagRangeStart.LockContentControl //ExFor:StructuredDocumentTagRangeStart.LockContents //ExFor:StructuredDocumentTagRangeStart.Level //ExFor:StructuredDocumentTagRangeStart.RangeEnd //ExFor:StructuredDocumentTagRangeStart.SdtType //ExFor:StructuredDocumentTagRangeStart.Tag //ExFor:StructuredDocumentTagRangeEnd //ExFor:StructuredDocumentTagRangeEnd.Id //ExSummary:Shows how to get multi-section structured document tags properties. Document doc = new Document(MyDir + "Multi-section structured document tags.docx"); // Note that these nodes can be a child of NodeType.Body node only and all properties of these nodes are read-only. StructuredDocumentTagRangeStart rangeStartTag = doc.GetChildNodes(NodeType.StructuredDocumentTagRangeStart, true)[0] as StructuredDocumentTagRangeStart; StructuredDocumentTagRangeEnd rangeEndTag = doc.GetChildNodes(NodeType.StructuredDocumentTagRangeEnd, true)[0] as StructuredDocumentTagRangeEnd; Assert.AreEqual(rangeStartTag.Id, rangeEndTag.Id); //ExSkip Assert.AreEqual(NodeType.StructuredDocumentTagRangeStart, rangeStartTag.NodeType); //ExSkip Assert.AreEqual(NodeType.StructuredDocumentTagRangeEnd, rangeEndTag.NodeType); //ExSkip Console.WriteLine("StructuredDocumentTagRangeStart values:"); Console.WriteLine($"\t|Id: {rangeStartTag.Id}"); Console.WriteLine($"\t|Title: {rangeStartTag.Title}"); Console.WriteLine($"\t|IsShowingPlaceholderText: {rangeStartTag.IsShowingPlaceholderText}"); Console.WriteLine($"\t|LockContentControl: {rangeStartTag.LockContentControl}"); Console.WriteLine($"\t|LockContents: {rangeStartTag.LockContents}"); Console.WriteLine($"\t|Level: {rangeStartTag.Level}"); Console.WriteLine($"\t|NodeType: {rangeStartTag.NodeType}"); Console.WriteLine($"\t|RangeEnd: {rangeStartTag.RangeEnd}"); Console.WriteLine($"\t|SdtType: {rangeStartTag.SdtType}"); Console.WriteLine($"\t|Tag: {rangeStartTag.Tag}\n"); Console.WriteLine("StructuredDocumentTagRangeEnd values:"); Console.WriteLine($"\t|Id: {rangeEndTag.Id}"); Console.WriteLine($"\t|NodeType: {rangeEndTag.NodeType}"); //ExEnd }
public void StructuredDocumentTagRangeStartXmlMapping() { //ExStart:StructuredDocumentTagRangeStartXmlMapping Document doc = new Document(MyDir + "Multi-section structured document tags.docx"); // Construct an XML part that contains data and add it to the document's CustomXmlPart collection. string xmlPartId = Guid.NewGuid().ToString("B"); string xmlPartContent = "<root><text>Text element #1</text><text>Text element #2</text></root>"; CustomXmlPart xmlPart = doc.CustomXmlParts.Add(xmlPartId, xmlPartContent); Console.WriteLine(Encoding.UTF8.GetString(xmlPart.Data)); // Create a StructuredDocumentTag that will display the contents of our CustomXmlPart in the document. StructuredDocumentTagRangeStart sdtRangeStart = (StructuredDocumentTagRangeStart)doc.GetChild(NodeType.StructuredDocumentTagRangeStart, 0, true); // If we set a mapping for our StructuredDocumentTag, // it will only display a part of the CustomXmlPart that the XPath points to. // This XPath will point to the contents second "<text>" element of the first "<root>" element of our CustomXmlPart. sdtRangeStart.XmlMapping.SetMapping(xmlPart, "/root[1]/text[2]", null); doc.Save(ArtifactsDir + "WorkingWithSdt.StructuredDocumentTagRangeStartXmlMapping.docx"); //ExEnd:StructuredDocumentTagRangeStartXmlMapping }