XmlWriter.WriteAttributes(XmlReader, Boolean) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
派生クラスでオーバーライドされると、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
XmlReader
の既定の属性をコピーする場合は true
。それ以外の場合は 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>
注釈
リーダーがノードWriteAttributes
上にelement
配置されている場合は、含まれるすべての属性がコピーされます。 リーダーがノードに attribute
配置されている場合、このメソッドは現在の属性を書き込み、残りの属性は要素終了タグまで書き込みます。 リーダーがノードに XmlDeclaration
配置されている場合、このメソッドは宣言内のすべての属性を書き込みます。 リーダーが他のノード型に配置されている場合、このメソッド XmlExceptionは .
このメソッドを使用して XmlValidatingReader呼び出した場合は、正しい形式の XML を作成するときに無効なドキュメントになる可能性のあるコンテンツ (エンティティから拡張された) が置き換えられます。 たとえば、拡張されたエンティティが属性に含まれている >
場合は、適切な形式のドキュメントを作成するために、展開された>がで書き出 >
されたときに置き換えられます。
このメソッドの非同期バージョンについては、次を参照してください WriteAttributesAsync。