SmartTag

SmartTag class

Questo elemento specifica la presenza di uno smart tag attorno a una o più strutture inline (esercitazioni, immagini, campi, ecc.) all’interno di un paragrafo.

Per saperne di più, visita ilTag di documenti strutturati o controllo dei contenuti articolo di documentazione.

public class SmartTag : CompositeNode

Costruttori

NomeDescrizione
SmartTag(DocumentBase)Inizializza una nuova istanza diSmartTag classe.

Proprietà

NomeDescrizione
Count { get; }Ottiene il numero di figli immediati di questo nodo.
CustomNodeId { get; set; }Specifica l’identificatore del nodo personalizzato.
virtual Document { get; }Ottiene il documento a cui appartiene questo nodo.
Element { get; set; }Specifica il nome dello smart tag all’interno del documento.
FirstChild { get; }Ottiene il primo figlio del nodo.
HasChildNodes { get; }RestituisceVERO se questo nodo ha nodi figlio.
override IsComposite { get; }RestituisceVERO poiché questo nodo può avere nodi figlio.
LastChild { get; }Ottiene l’ultimo figlio del nodo.
NextSibling { get; }Ottiene il nodo immediatamente successivo a questo nodo.
override NodeType { get; }RestituisceSmartTag .
ParentNode { get; }Ottiene il genitore immediato di questo nodo.
PreviousSibling { get; }Ottiene il nodo immediatamente precedente questo nodo.
Properties { get; }Una raccolta delle proprietà degli smart tag.
Range { get; }Restituisce unRangeoggetto che rappresenta la porzione di un documento contenuta in questo nodo.
Uri { get; set; }Specifica l’URI dello spazio dei nomi dello smart tag.

Metodi

NomeDescrizione
override Accept(DocumentVisitor)Accetta un visitatore.
override AcceptEnd(DocumentVisitor)Accetta un visitatore per aver visitato la fine dello SmartTag.
override AcceptStart(DocumentVisitor)Accetta un visitatore per aver visitato l’inizio dello SmartTag.
AppendChild<T>(T)Aggiunge il nodo specificato alla fine dell’elenco dei nodi figlio per questo nodo.
Clone(bool)Crea un duplicato del nodo.
CreateNavigator()Crea un navigatore che può essere utilizzato per attraversare e leggere i nodi.
GetAncestor(NodeType)Ottiene il primo antenato dell’oggetto specificatoNodeType .
GetAncestor(Type)Ottiene il primo antenato del tipo di oggetto specificato.
GetChild(NodeType, int, bool)Restituisce un N-esimo nodo figlio che corrisponde al tipo specificato.
GetChildNodes(NodeType, bool)Restituisce una raccolta live di nodi figlio che corrispondono al tipo specificato.
GetEnumerator()Fornisce supporto per ogni iterazione di stile sui nodi figlio di questo nodo.
override GetText()Ottiene il testo di questo nodo e di tutti i suoi figli.
IndexOf(Node)Restituisce l’indice del nodo figlio specificato nell’array dei nodi figlio.
InsertAfter<T>(T, Node)Inserisce il nodo specificato subito dopo il nodo di riferimento specificato.
InsertBefore<T>(T, Node)Inserisce il nodo specificato immediatamente prima del nodo di riferimento specificato.
NextPreOrder(Node)Ottiene il nodo successivo in base all’algoritmo di attraversamento dell’albero preordinato.
PrependChild<T>(T)Aggiunge il nodo specificato all’inizio dell’elenco dei nodi figlio per questo nodo.
PreviousPreOrder(Node)Ottiene il nodo precedente secondo l’algoritmo di attraversamento dell’albero preordinato.
Remove()Si rimuove dal genitore.
RemoveAllChildren()Rimuove tutti i nodi figlio del nodo corrente.
RemoveChild<T>(T)Rimuove il nodo figlio specificato.
RemoveSmartTags()Rimuove tuttoSmartTag nodi discendenti del nodo corrente.
SelectNodes(string)Seleziona un elenco di nodi che corrispondono all’espressione XPath.
SelectSingleNode(string)Seleziona il primoNode che corrisponde all’espressione XPath.
ToString(SaveFormat)Esporta il contenuto del nodo in una stringa nel formato specificato.
ToString(SaveOptions)Esporta il contenuto del nodo in una stringa utilizzando le opzioni di salvataggio specificate.

Osservazioni

Gli smart tag sono un tipo di markup XML personalizzato. Gli smart tag offrono la possibilità di incorporare semantiche definite dal cliente nel documento tramite la possibilità di fornire un namespace/nome di base per un’esecuzione o un insieme di esecuzioni all’interno di un documento.

SmartTag può essere figlio di unParagraph o un altroSmartTag nodo.

L’elenco completo dei nodi figlio che possono verificarsi all’interno di uno smart tag è costituito da BookmarkStart ,BookmarkEnd , FieldStart ,FieldSeparator ,FieldEnd ,FormField , Comment ,Footnote , Run ,SpecialChar , Shape ,GroupShape , CommentRangeStart , CommentRangeEnd , SmartTag.

Esempi

Mostra come creare tag intelligenti.

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

    // Un tag intelligente appare in un documento con Microsoft Word che riconosce una parte del suo testo come una qualche forma di dati,
    // come un nome, una data o un indirizzo e lo converte in un collegamento ipertestuale che presenta una sottolineatura tratteggiata viola.
    SmartTag smartTag = new SmartTag(doc);

    // I tag intelligenti sono nodi compositi che contengono il testo riconosciuto nella sua interezza.
    // Aggiungere manualmente i contenuti a questo smart tag.
    smartTag.AppendChild(new Run(doc, "May 29, 2019"));

    // Microsoft Word potrebbe riconoscere il contenuto sopra riportato come una data.
    // I tag intelligenti utilizzano la proprietà "Element" per riflettere il tipo di dati che contengono.
    smartTag.Element = "date";

    // Alcuni tipi di smart tag elaborano ulteriormente il loro contenuto trasformandolo in proprietà XML personalizzate.
    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"));

    // Imposta l'URI dello smart tag sul valore predefinito.
    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 un altro tag intelligente per un ticker azionario.
    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."));

    // Stampa tutti gli smart tag nel nostro documento utilizzando un visitatore del documento.
    doc.Accept(new SmartTagPrinter());

    // Le versioni precedenti di Microsoft Word supportano i tag intelligenti.
    doc.Save(ArtifactsDir + "SmartTag.Create.doc");

    // Utilizzare il metodo "RemoveSmartTags" per rimuovere tutti i tag intelligenti da un documento.
    Assert.AreEqual(2, doc.GetChildNodes(NodeType.SmartTag, true).Count);

    doc.RemoveSmartTags();

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

/// <summary>
/// Stampa gli smart tag visitati e il loro contenuto.
/// </summary>
private class SmartTagPrinter : DocumentVisitor
{
    /// <summary>
    /// Chiamato quando nel documento viene rilevato un nodo SmartTag.
    /// </summary>
    public override VisitorAction VisitSmartTagStart(SmartTag smartTag)
    {
        Console.WriteLine($"Smart tag type: {smartTag.Element}");
        return VisitorAction.Continue;
    }

    /// <summary>
    /// Chiamato quando termina 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;
    }
}

Guarda anche