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
.
Средство чтения не расположено на узле element
, attribute
или XmlDeclaration
.
Метод XmlWriter вызван перед завершением предыдущей асинхронной операции. В этом случае возникает исключение InvalidOperationException с сообщением "Асинхронная операция уже выполняется".
Примеры
Следующий пример копирует все элементы в выходные данные, изменяет имена тегов в верхний регистр и копирует все атрибуты без изменений.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
void main()
{
XmlReader^ reader = XmlReader::Create( L"test1.xml" );
XmlWriterSettings^ settings = gcnew 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();
}
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.