SmartTag

SmartTag class

Este elemento especifica la presencia de una etiqueta inteligente alrededor de una o más estructuras en línea (ejecuciones, imágenes, campos, etc.) dentro de un párrafo.

Para obtener más información, visite elEtiquetas de documentos estructurados o control de contenido Artículo de documentación.

public class SmartTag : CompositeNode

Constructores

NombreDescripción
SmartTag(DocumentBase)Inicializa una nueva instancia delSmartTag clase.

Propiedades

NombreDescripción
Count { get; }Obtiene el número de hijos inmediatos de este nodo.
CustomNodeId { get; set; }Especifica un identificador de nodo personalizado.
virtual Document { get; }Obtiene el documento al que pertenece este nodo.
Element { get; set; }Especifica el nombre de la etiqueta inteligente dentro del documento.
FirstChild { get; }Obtiene el primer hijo del nodo.
HasChildNodes { get; }Devuelveverdadero si este nodo tiene nodos secundarios.
override IsComposite { get; }Devuelveverdadero ya que este nodo puede tener nodos secundarios.
LastChild { get; }Obtiene el último hijo del nodo.
NextSibling { get; }Obtiene el nodo inmediatamente siguiente a este nodo.
override NodeType { get; }DevuelveSmartTag .
ParentNode { get; }Obtiene el padre inmediato de este nodo.
PreviousSibling { get; }Obtiene el nodo inmediatamente anterior a este nodo.
Properties { get; }Una colección de propiedades de etiquetas inteligentes.
Range { get; }Devuelve unRangeobjeto que representa la porción de un documento que está contenida en este nodo.
Uri { get; set; }Especifica el URI del espacio de nombres de la etiqueta inteligente.

Métodos

NombreDescripción
override Accept(DocumentVisitor)Acepta un visitante.
override AcceptEnd(DocumentVisitor)Acepta un visitante por visitar el final de la SmartTag.
override AcceptStart(DocumentVisitor)Acepta un visitante por visitar el inicio del SmartTag.
AppendChild<T>(T)Agrega el nodo especificado al final de la lista de nodos secundarios para este nodo.
Clone(bool)Crea un duplicado del nodo.
CreateNavigator()Crea un navegador que puede utilizarse para recorrer y leer nodos.
GetAncestor(NodeType)Obtiene el primer ancestro del especificadoNodeType .
GetAncestor(Type)Obtiene el primer ancestro del tipo de objeto especificado.
GetChild(NodeType, int, bool)Devuelve un nodo secundario N que coincide con el tipo especificado.
GetChildNodes(NodeType, bool)Devuelve una colección activa de nodos secundarios que coinciden con el tipo especificado.
GetEnumerator()Proporciona soporte para cada iteración de estilo sobre los nodos secundarios de este nodo.
override GetText()Obtiene el texto de este nodo y de todos sus hijos.
IndexOf(Node)Devuelve el índice del nodo secundario especificado en la matriz de nodos secundarios.
InsertAfter<T>(T, Node)Inserta el nodo especificado inmediatamente después del nodo de referencia especificado.
InsertBefore<T>(T, Node)Inserta el nodo especificado inmediatamente antes del nodo de referencia especificado.
NextPreOrder(Node)Obtiene el siguiente nodo según el algoritmo de recorrido del árbol de preorden.
PrependChild<T>(T)Agrega el nodo especificado al comienzo de la lista de nodos secundarios para este nodo.
PreviousPreOrder(Node)Obtiene el nodo anterior según el algoritmo de recorrido del árbol de preorden.
Remove()Se elimina a sí mismo del padre.
RemoveAllChildren()Elimina todos los nodos secundarios del nodo actual.
RemoveChild<T>(T)Elimina el nodo secundario especificado.
RemoveSmartTags()Elimina todoSmartTag nodos descendientes del nodo actual.
SelectNodes(string)Selecciona una lista de nodos que coinciden con la expresión XPath.
SelectSingleNode(string)Selecciona el primerNode que coincide con la expresión XPath.
ToString(SaveFormat)Exporta el contenido del nodo en una cadena en el formato especificado.
ToString(SaveOptions)Exporta el contenido del nodo en una cadena utilizando las opciones de guardado especificadas.

Observaciones

Las etiquetas inteligentes son un tipo de marcado XML personalizado. Permiten incrustar semántica definida por el cliente en el documento mediante la capacidad de proporcionar un espacio de nombres básico para una ejecución o un conjunto de ejecuciones dentro del documento.

SmartTag puede ser hijo de unParagraph o otroSmartTag nodo.

La lista completa de nodos secundarios que pueden aparecer dentro de una etiqueta inteligente consta de BookmarkStart ,BookmarkEnd , FieldStart ,FieldSeparator ,FieldEnd ,FormField , Comment ,Footnote , Run ,SpecialChar , Shape ,GroupShape , CommentRangeStart , CommentRangeEnd , SmartTag.

Ejemplos

Muestra cómo crear etiquetas inteligentes.

public void Create()
{
    Document doc = new Document();

    // Una etiqueta inteligente aparece en un documento con Microsoft Word y reconoce una parte de su texto como algún tipo de datos,
    // como un nombre, una fecha o una dirección, y lo convierte en un hipervínculo que muestra un subrayado punteado de color púrpura.
    SmartTag smartTag = new SmartTag(doc);

    // Las etiquetas inteligentes son nodos compuestos que contienen el texto reconocido en su totalidad.
    // Agregue contenido a esta etiqueta inteligente manualmente.
    smartTag.AppendChild(new Run(doc, "May 29, 2019"));

    //Microsoft Word puede reconocer el contenido anterior como una fecha.
    // Las etiquetas inteligentes utilizan la propiedad "Elemento" para reflejar el tipo de datos que contienen.
    smartTag.Element = "date";

    // Algunos tipos de etiquetas inteligentes procesan sus contenidos y los convierten en propiedades XML personalizadas.
    smartTag.Properties.Add(new CustomXmlProperty("Day", string.Empty, "29"));
    smartTag.Properties.Add(new CustomXmlProperty("Month", string.Empty, "5"));
    smartTag.Properties.Add(new CustomXmlProperty("Year", string.Empty, "2019"));

    // Establezca el URI de la etiqueta inteligente en el valor predeterminado.
    smartTag.Uri = "urn:schemas-microsoft-com:office:smarttags";

    doc.FirstSection.Body.FirstParagraph.AppendChild(smartTag);
    doc.FirstSection.Body.FirstParagraph.AppendChild(new Run(doc, " is a date. "));

    // Crea otra etiqueta inteligente para un símbolo de bolsa.
    smartTag = new SmartTag(doc);
    smartTag.Element = "stockticker";
    smartTag.Uri = "urn:schemas-microsoft-com:office:smarttags";

    smartTag.AppendChild(new Run(doc, "MSFT"));

    doc.FirstSection.Body.FirstParagraph.AppendChild(smartTag);
    doc.FirstSection.Body.FirstParagraph.AppendChild(new Run(doc, " is a stock ticker."));

    // Imprima todas las etiquetas inteligentes en nuestro documento usando un visitante de documentos.
    doc.Accept(new SmartTagPrinter());

    // Las versiones anteriores de Microsoft Word admiten etiquetas inteligentes.
    doc.Save(ArtifactsDir + "SmartTag.Create.doc");

    // Utilice el método "RemoveSmartTags" para eliminar todas las etiquetas inteligentes de un documento.
    Assert.AreEqual(2, doc.GetChildNodes(NodeType.SmartTag, true).Count);

    doc.RemoveSmartTags();

    Assert.AreEqual(0, doc.GetChildNodes(NodeType.SmartTag, true).Count);
}

/// <summary>
/// Imprime las etiquetas inteligentes visitadas y su contenido.
/// </summary>
private class SmartTagPrinter : DocumentVisitor
{
    /// <summary>
    /// Se llama cuando se encuentra un nodo SmartTag en el documento.
    /// </summary>
    public override VisitorAction VisitSmartTagStart(SmartTag smartTag)
    {
        Console.WriteLine($"Smart tag type: {smartTag.Element}");
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Se llama cuando finaliza la visita a un nodo SmartTag.
    /// </summary>
    public override VisitorAction VisitSmartTagEnd(SmartTag smartTag)
    {
        Console.WriteLine($"\tContents: \"{smartTag.ToString(SaveFormat.Text)}\"");

        if (smartTag.Properties.Count == 0)
        {
            Console.WriteLine("\tContains no properties");
        }
        else
        {
            Console.Write("\tProperties: ");
            string[] properties = new string[smartTag.Properties.Count];
            int index = 0;

            foreach (CustomXmlProperty cxp in smartTag.Properties)
                properties[index++] = $"\"{cxp.Name}\" = \"{cxp.Value}\"";

            Console.WriteLine(string.Join(", ", properties));
        }

        return VisitorAction.Continue;
    }
}

Ver también