XmlWriter.WriteNode メソッド
派生クラスでオーバーライドされると、リーダーのデータをすべてライタにコピーし、リーダーを次の兄弟の開始位置に移動します。
Public Overridable Sub WriteNode( _
ByVal reader As XmlReader, _ ByVal defattr As Boolean _)
[C#]
public virtual void WriteNode(XmlReaderreader,booldefattr);
[C++]
public: virtual void WriteNode(XmlReader* reader,booldefattr);
[JScript]
public function WriteNode(
reader : XmlReader,defattr : Boolean);
パラメータ
- reader
読み取り元の XmlReader 。 - defattr
XmlReader の既定の属性をコピーする場合は true 。それ以外の場合は false 。
例外
例外の種類 | 条件 |
---|---|
ArgumentException | reader が null 参照 (Visual Basic では Nothing) です。 |
解説
このメソッドでサポートされるノード型を次の表に示します。
ノード型 | WriteNode の動作 |
---|---|
Element | 要素ノードと任意の属性ノードを書き込みます。 |
Attribute | 操作なし。代わりに、 WriteStartAttribute または WriteAttributeString を使用します。 |
Text | テキスト ノードを書き込みます。 |
CDATA | CDATA セクション ノードを書き込みます。 |
EntityReference | エンティティ参照ノードを書き込みます。 |
ProcessingInstruction | 処理命令ノードを書き込みます。 |
Comment | コメント ノードを書き込みます。 |
DocumentType | ドキュメント型ノードを書き込みます。 |
SignificantWhitespace | 有意な空白ノードを書き込みます。 |
Whitespace | 空白ノードを書き込みます。 |
EndElement | 操作なし。 |
EndEntity | 操作なし。 |
XmlDeclaration | XML 宣言ノードを書き込みます。 |
リーダーが初期状態の場合、このメソッドはリーダーをファイルの末尾に移動します。リーダーが既にファイルの末尾にあるか、終了状態の場合、このメソッドは機能しません。
次の C# コードは、XML 入力ドキュメント全体をコンソールにコピーします。
XmlTextReader reader = new XmlTextReader(myfile);
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.WriteNode(reader, false);
ルート ノードから離れてドキュメント内の別の場所にいる場合、次の C# の例は、ノードを正しく書き込みます。
XmlTextReader reader = new XmlTextReader(myfile);
reader.Read(); // Read PI
reader.Read(); // Read Comment
reader.Read(); // Read DOCType
XmlTextWriter writer = new XmlTextWriter(Console.Out);
while (!reader.EOF){
writer.WriteNode(reader, false);
}
リーダーが空白を返すように構成され、ライタの Formatting が "Indented" に設定されている場合、 WriteNode は予期しない出力を生成する場合があります。基本的に、二重の書式指定が生成されます。
使用例
[Visual Basic, C#, C++] 最初と最後の Book ノードをコンソールに書き込む例を次に示します。
Imports System
Imports System.IO
Imports System.Xml
public class Sample
public shared sub Main()
Dim reader as XmlTextReader = new XmlTextReader("books.xml")
reader.WhitespaceHandling = WhitespaceHandling.None
'Move the reader to the first book element.
reader.MoveToContent()
reader.Read()
'Create a writer that outputs to the console.
Dim writer as XmlTextWriter = new XmlTextWriter (Console.Out)
writer.Formatting = Formatting.Indented
'Write the start tag.
writer.WriteStartElement("myBooks")
'Write the first book.
writer.WriteNode(reader, false)
'Skip the second book.
reader.Skip()
'Write the last book.
writer.WriteNode(reader, false)
writer.WriteEndElement()
'Close the writer and the reader.
writer.Close()
reader.Close()
end sub
end class
[C#]
using System;
using System.IO;
using System.Xml;
public class Sample{
public static void Main(){
XmlTextReader reader = new XmlTextReader("books.xml");
reader.WhitespaceHandling = WhitespaceHandling.None;
//Move the reader to the first book element.
reader.MoveToContent();
reader.Read();
//Create a writer that outputs to the console.
XmlTextWriter writer = new XmlTextWriter (Console.Out);
writer.Formatting = Formatting.Indented;
//Write the start tag.
writer.WriteStartElement("myBooks");
//Write the first book.
writer.WriteNode(reader, false);
//Skip the second book.
reader.Skip();
//Write the last book.
writer.WriteNode(reader, false);
writer.WriteEndElement();
//Close the writer and the reader.
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"books.xml");
reader -> WhitespaceHandling = WhitespaceHandling::None;
// Move the reader to the first book element.
reader -> MoveToContent();
reader -> Read();
// Create a writer that outputs to the console.
XmlTextWriter* writer = new XmlTextWriter (Console::Out);
writer -> Formatting = Formatting::Indented;
// Write the start tag.
writer -> WriteStartElement(S"myBooks");
// Write the first book.
writer -> WriteNode(reader, false);
// Skip the second book.
reader -> Skip();
// Write the last book.
writer -> WriteNode(reader, false);
writer -> WriteEndElement();
// Close the writer and the reader.
writer -> Close();
reader -> Close();
}
この例では、入力として、 books.xml というファイルを使用しています。
<bookstore>
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
[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