CustomXmlPartCollection

CustomXmlPartCollection class

Представляет коллекцию пользовательских частей XML. ПредметыCustomXmlPart объекты.

Чтобы узнать больше, посетитеСтруктурированные теги документа или контроль содержимого статья документации.

public class CustomXmlPartCollection : IEnumerable<CustomXmlPart>

Конструкторы

ИмяОписание
CustomXmlPartCollection()Конструктор по умолчанию.

Характеристики

ИмяОписание
Count { get; }Получает количество элементов, содержащихся в коллекции.
Item { get; set; }Получает или задает элемент по указанному индексу.

Методы

ИмяОписание
Add(CustomXmlPart)Добавляет элемент в коллекцию.
Add(string, string)Создает новую часть XML с указанным XML и добавляет ее в коллекцию.
Clear()Удаляет все элементы из коллекции.
Clone()Создает глубокую копию этой коллекции и ее элементов.
GetById(string)Находит и возвращает пользовательскую часть XML по ее идентификатору.
GetEnumerator()Возвращает объект перечислителя, который можно использовать для перебора всех элементов коллекции.
RemoveAt(int)Удаляет элемент по указанному индексу.

Примечания

Обычно вам не нужно создавать экземпляры этого класса. Вы можете получить доступ к пользовательским XML-данным , хранящимся в документе, черезCustomXmlParts свойство.

Примеры

Показывает, как создать тег структурированного документа с пользовательскими данными XML.

Document doc = new Document();

// Создаем часть XML, содержащую данные, и добавляем ее в коллекцию документа.
// Если мы включим вкладку «Разработчик» в Microsoft Word,
// мы можем найти элементы из этой коллекции в «Панели сопоставления XML» вместе с несколькими элементами по умолчанию.
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);

// Ниже приведены два способа обращения к частям XML.
// 1 - По индексу в пользовательской коллекции частей XML:
Assert.AreEqual(xmlPart, doc.CustomXmlParts[0]);

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

// Добавляем ассоциацию схемы XML.
xmlPart.Schemas.Add("http://www.w3.org/2001/XMLSchema");

// Клонируем часть и затем вставляем ее в коллекцию.
CustomXmlPart xmlPartClone = xmlPart.Clone();
xmlPartClone.Id = Guid.NewGuid().ToString("B");
doc.CustomXmlParts.Add(xmlPartClone);

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

// Перебираем коллекцию и печатаем содержимое каждой части.
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++;
    }
}

// Используйте метод «RemoveAt», чтобы удалить клонированную часть по индексу.
doc.CustomXmlParts.RemoveAt(1);

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

// Клонировать коллекцию частей XML, а затем использовать метод «Очистить», чтобы удалить сразу все ее элементы.
CustomXmlPartCollection customXmlParts = doc.CustomXmlParts.Clone();
customXmlParts.Clear();

// Создаем структурированный тег документа, который будет отображать содержимое нашей части, и вставляем его в тело документа.
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");

Смотрите также