Поделиться через


Запись атрибутов

Методы WriteAttributeString, WriteStartAttribute и WriteAttributes предназначены специально для создания атрибутов. С помощью этих методов можно производить запись атрибутов в узлы элементов. Методы записи атрибутов также можно использовать для создания деклараций пространств имен в элементе. Дополнительные сведения см. в разделе Обработка пространств имен в XmlWriter.

WriteAttributeString

Метод WriteAttributeString является самым простым способом записать атрибут. Он используется для записи узла атрибута целиком, включая строковое значение. Следующий код добавляет атрибут (supplierID) и значение (A23-1) в XML-элемент (Product):

Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Product")
        writer.WriteAttributeString("supplierID", "A23-1")
        writer.WriteElementString("ProductID", "12345")
        writer.WriteEndElement()
End Using
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Product");
    writer.WriteAttributeString("supplierID", "A23-1");
    writer.WriteElementString("ProductID", "12345");
    writer.WriteEndElement();
}

Вышеприведенный код выводит на консоль следующие данные.

<Product supplierID="A23-1">
  <ProductID>12345</ProductID>
</Product>

WriteStartAttribute

Метод WriteStartAttribute является расширенной версией метода WriteAttributeString. Он позволяет записать значение атрибута с помощью вызовов нескольких методов. Например, можно использовать метод WriteValue для записи типизированного значения.

Атрибут закрывается вызовом метода WriteEndAttribute.

В следующем коде hireDate является объектом DateTime, который содержит дату приема сотрудника на работу. Код записывает атрибут review-date, который содержит вычисленное значение даты завершения 6-месячного испытательного периода работы для сотрудника.

Dim hireDate As New DateTime(2008, 5, 20)
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("Employee")
    writer.WriteStartAttribute("review-date")
    writer.WriteValue(hireDate.AddMonths(6))
    writer.WriteEndAttribute()
    writer.WriteElementString("EmployeeID", "12345")
    writer.WriteEndElement()
End Using
DateTime hireDate = new DateTime(2008, 5, 20);
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{
    writer.WriteStartElement("Employee");
    writer.WriteStartAttribute("review-date");
    writer.WriteValue(hireDate.AddMonths(6));
    writer.WriteEndAttribute();
    writer.WriteElementString("EmployeeID", "12345");
    writer.WriteEndElement();
}

Вышеприведенный код выводит на консоль следующие данные.

<Employee review-date="2008-11-20T00:00:00">
  <EmployeeID>12345</EmployeeID>
</Employee>

WriteAttributes

Метод WriteAttributes позволяет скопировать все атрибуты, найденные в текущей позиции переданного объекта XmlReader. Работа метода WriteAttributes зависит от типа узла, на который в данный момент позиционирован модуль чтения.

В следующей таблице описаны результаты вызова метода WriteAttributes для каждого типа узла. Если модуль чтения расположен на узле, тип которого не перечислен в следующей таблице, метод WriteAttributes не выполняет никаких действий.

Тип узла

Поведение метода WriteAttributes

Атрибут

Записывает текущий атрибут, а затем остальные атрибуты, пока не будет обнаружен закрывающий тег элемента.

Элемент

Записывает все атрибуты, содержащиеся в элементе.

XML-декларация

Записывает все атрибуты в декларации.

Например, в следующем коде модуль записи копирует все атрибуты, обнаруженные в текущей позиции модуля чтения, в модуль записи.

Dim reader As XmlReader = XmlReader.Create("book.xml")
reader.ReadToDescendant("book")
Dim settings As New XmlWriterSettings()
settings.Indent = True
Using writer As XmlWriter = XmlWriter.Create(Console.Out, settings)
    writer.WriteStartElement("root")
    writer.WriteAttributes(reader, True)
    writer.WriteEndElement()
End Using
XmlReader reader = XmlReader.Create("book.xml");
reader.ReadToDescendant("book");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(Console.Out, settings))
{

    writer.WriteStartElement("root");
    writer.WriteAttributes(reader, true);
    writer.WriteEndElement();

}

В коде используется следующий XML-файл примера (book.xml):

<?xml version="1.0" ?>
<book genre="autobiography" 
      publicationdate="1981" 
      ISBN="1-861003-11-0">Book Title</book>

Вышеприведенный код выводит на консоль следующие данные.

<root genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0" />

См. также

Другие ресурсы

Запись XML с помощью XmlWriter