CustomXmlPartCollection

CustomXmlPartCollection class

Representa una colección de elementos XML personalizados. los artículos sonCustomXmlPart objetos.

public class CustomXmlPartCollection : IEnumerable<CustomXmlPart>

Constructores

Nombre Descripción
CustomXmlPartCollection() Constructor predeterminado

Propiedades

Nombre Descripción
Count { get; } Obtiene el número de elementos que contiene la colección.
Item { get; set; } Obtiene o establece un elemento en el índice especificado.

Métodos

Nombre Descripción
Add(CustomXmlPart) Agrega un elemento a la colección.
Add(string, string) Crea una nueva parte XML con el XML especificado y lo agrega a la colección.
Clear() Elimina todos los elementos de la colección.
Clone() Hace una copia profunda de esta colección y sus elementos.
GetById(string) Encuentra y devuelve una parte XML personalizada por su identificador.
GetEnumerator() Devuelve un objeto enumerador que se puede usar para iterar sobre todos los elementos de la colección.
RemoveAt(int) Elimina un elemento en el índice especificado.

Observaciones

Normalmente no necesita crear instancias de esta clase. Puede acceder a los datos XML personalizados almacenados en un documento a través delCustomXmlParts propiedad.

Ejemplos

Muestra cómo crear una etiqueta de documento estructurado con datos XML personalizados.

Document doc = new Document();

// Construya una parte XML que contenga datos y agréguela a la colección del documento.
// Si habilitamos la pestaña "Desarrollador" en Microsoft Word,
// podemos encontrar elementos de esta colección en el "Panel de mapeo XML", junto con algunos elementos predeterminados.
string xmlPartId = Guid.NewGuid().ToString("B");
string xmlPartContent = "<root><text>Hello world!</text></root>";
CustomXmlPart xmlPart = doc.CustomXmlParts.Add(xmlPartId, xmlPartContent);

Assert.AreEqual(Encoding.ASCII.GetBytes(xmlPartContent), xmlPart.Data);
Assert.AreEqual(xmlPartId, xmlPart.Id);

// A continuación hay dos formas de referirse a las partes XML.
// 1 - Por un índice en la colección de piezas XML personalizadas:
Assert.AreEqual(xmlPart, doc.CustomXmlParts[0]);

// 2 - Por GUID:
Assert.AreEqual(xmlPart, doc.CustomXmlParts.GetById(xmlPartId));

// Agregar una asociación de esquema XML.
xmlPart.Schemas.Add("http://www.w3.org/2001/XMLSchema");

// Clonar una parte y luego insertarla en la colección.
CustomXmlPart xmlPartClone = xmlPart.Clone();
xmlPartClone.Id = Guid.NewGuid().ToString("B");
doc.CustomXmlParts.Add(xmlPartClone);

Assert.AreEqual(2, doc.CustomXmlParts.Count);

// Iterar a través de la colección e imprimir el contenido de cada parte.
using (IEnumerator<CustomXmlPart> enumerator = doc.CustomXmlParts.GetEnumerator())
{
    int index = 0;
    while (enumerator.MoveNext())
    {
        Console.WriteLine($"XML part index {index}, ID: {enumerator.Current.Id}");
        Console.WriteLine($"\tContent: {Encoding.UTF8.GetString(enumerator.Current.Data)}");
        index++;
    }
}

// Use el método "RemoveAt" para eliminar la parte clonada por índice.
doc.CustomXmlParts.RemoveAt(1);

Assert.AreEqual(1, doc.CustomXmlParts.Count);

// Clona la colección de piezas XML y luego usa el método "Borrar" para eliminar todos sus elementos a la vez.
CustomXmlPartCollection customXmlParts = doc.CustomXmlParts.Clone();
customXmlParts.Clear();

// Crear una etiqueta de documento estructurado que mostrará el contenido de nuestra parte e insertarlo en el cuerpo del documento.
StructuredDocumentTag tag = new StructuredDocumentTag(doc, SdtType.PlainText, MarkupLevel.Block);
tag.XmlMapping.SetMapping(xmlPart, "/root[1]/text[1]", string.Empty);

doc.FirstSection.Body.AppendChild(tag);

doc.Save(ArtifactsDir + "StructuredDocumentTag.CustomXml.docx");

Ver también