XmlWriter.WriteAttributes メソッド

派生クラスによってオーバーライドされると、 XmlReader の現在の位置で見つかったすべての属性を書き込みます。

Public Overridable Sub WriteAttributes( _
   ByVal reader As XmlReader, _   ByVal defattr As Boolean _)
[C#]
public virtual void WriteAttributes(XmlReaderreader,booldefattr);
[C++]
public: virtual void WriteAttributes(XmlReader* reader,booldefattr);
[JScript]
public function WriteAttributes(
   reader : XmlReader,defattr : Boolean);

パラメータ

  • reader
    属性のコピー元の XmlReader
  • defattr
    XmlReader の既定の属性をコピーする場合は true 。それ以外の場合は false

例外

例外の種類 条件
ArgumentException reader が null 参照 (Visual Basic では Nothing) です。
XmlException リーダーが、要素ノード、属性ノード、または XmlDeclaration ノードに配置されていません。

解説

リーダーが要素ノードに配置されている場合、 WriteAttributes は、格納されているすべての属性をコピーします。リーダーが属性ノードに配置されている場合、このメソッドは、現在の属性を書き込み、次に残りの属性を要素の終了タグまで書き込みます。リーダーが XmlDeclaration ノードに配置されている場合、このメソッドは、宣言内のすべての属性を書き込みます。リーダーが他のノード型に配置されている場合、このメソッドは何も実行しません。

整形式の XML を確認するために、 XmlValidatingReader を使用してこのメソッドを呼び出すと、無効なドキュメントになる可能性がある内容 (エンティティから展開された内容) は、書き込み時に置き換えられます。たとえば、展開された > エンティティが属性に含まれている場合、整形式のドキュメントを確認するために、展開された > は、書き込み時に > に置き換えられます。

使用例

[Visual Basic, C#, C++] すべての要素を出力にコピーし、タグ名を大文字に変更し、変更されていない属性をすべてコピーする例を次に示します。

 
Option Strict
Option Explicit

Imports System
Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        Dim reader As New XmlTextReader("test1.xml")
        Dim writer As New XmlTextWriter(Console.Out)
        writer.Formatting = Formatting.Indented
        
        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 'Main
End Class 'Sample

[C#] 
using System;
using System.IO;
using System.Xml;

public class Sample
{

  public static void Main()
  {
    XmlTextReader reader = new XmlTextReader("test1.xml");
    XmlTextWriter writer = new XmlTextWriter(Console.Out);
    writer.Formatting = Formatting.Indented;

    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();
  }
}

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;

int main()
{
   XmlTextReader* reader = new XmlTextReader(S"test1.xml");
   XmlTextWriter* writer = new XmlTextWriter(Console::Out);
   writer->Formatting = Formatting::Indented;

   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();
}

この例では、入力として、 test1.xml というファイルを使用しています。

<test a="1" b="2">
  <item c="3" d="4" e="5" f="6"/>
</test>

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

XmlWriter クラス | XmlWriter メンバ | System.Xml 名前空間 | EntityHandling