XmlWriter.WriteAttributes(XmlReader, Boolean) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
При переопределении в производном классе записывает все атрибуты, найденные в текущей позиции в производном XmlReaderклассе.
public:
virtual void WriteAttributes(System::Xml::XmlReader ^ reader, bool defattr);
public virtual void WriteAttributes(System.Xml.XmlReader reader, bool defattr);
abstract member WriteAttributes : System.Xml.XmlReader * bool -> unit
override this.WriteAttributes : System.Xml.XmlReader * bool -> unit
Public Overridable Sub WriteAttributes (reader As XmlReader, defattr As Boolean)
Параметры
- reader
- XmlReader
Объект XmlReader , из которого нужно скопировать атрибуты.
- defattr
- Boolean
trueЗначение , XmlReaderчтобы скопировать атрибуты по умолчанию из ; falseв противном случае .
Исключения
reader равно null.
Средство чтения не размещается на elementattribute узле или XmlDeclaration на узле.
Метод XmlWriter был вызван до завершения предыдущей асинхронной операции. В этом случае InvalidOperationException создается сообщение "Асинхронная операция уже выполняется".
Примеры
Следующий пример копирует все элементы в выходные данные, изменяет имена тегов в верхний регистр и копирует все атрибуты без изменений.
using System;
using System.IO;
using System.Xml;
public class Sample {
public static void Main() {
XmlReader reader = XmlReader.Create("test1.xml");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(Console.Out);
while (reader.Read()) {
if (reader.NodeType == XmlNodeType.Element) {
writer.WriteStartElement(reader.Name.ToUpper());
writer.WriteAttributes(reader, false);
if (reader.IsEmptyElement) writer.WriteEndElement();
}
else if (reader.NodeType == XmlNodeType.EndElement) {
writer.WriteEndElement();
}
}
writer.Close();
reader.Close();
}
}
Option Strict
Option Explicit
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim reader As XmlReader = XmlReader.Create("test1.xml")
Dim settings As XmlWriterSettings = new XmlWriterSettings()
settings.Indent = true
Dim writer As XmlWriter = XmlWriter.Create(Console.Out)
While reader.Read()
If reader.NodeType = XmlNodeType.Element Then
writer.WriteStartElement(reader.Name.ToUpper())
writer.WriteAttributes(reader, False)
If reader.IsEmptyElement Then
writer.WriteEndElement()
End If
Else
If reader.NodeType = XmlNodeType.EndElement Then
writer.WriteEndElement()
End If
End If
End While
writer.Close()
reader.Close()
End Sub
End Class
В этом примере файл test1.xmlиспользуется в качестве входных данных.
<test a="1" b="2">
<item c="3" d="4" e="5" f="6"/>
</test>
Комментарии
Если средство чтения размещено на element узле WriteAttributes , копирует все содержащиеся атрибуты. Если средство чтения размещается на узле, этот метод записывает текущий attribute атрибут, а остальные атрибуты не закрываются тегом элемента. Если средство чтения размещено на XmlDeclaration узле, этот метод записывает все атрибуты в объявлении. Если средство чтения размещено на любом другом типе узла, этот метод вызывает XmlExceptionисключение.
Если этот метод вызывается с помощью XmlValidatingReader, чтобы обеспечить хорошо сформированный XML-контент (который был развернут из сущностей), который может привести к замене недопустимого документа при написании. Например, если атрибут содержит > сущность, которая была развернута, чтобы убедиться, что развернутый > документ будет заменен при написании.>
Сведения об асинхронной версии этого метода см. в разделе WriteAttributesAsync.