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