XmlTextWriter クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
W3C 拡張マークアップ言語 (XML) 1.0 および XML 推奨事項の名前空間に準拠する XML データを含むストリームまたはファイルを、キャッシュされていない高速かつ前方専用の方法で生成するライターを表します。
代わりに XmlWriter クラスを使用することをお勧めします。
public ref class XmlTextWriter : System::Xml::XmlWriter
public class XmlTextWriter : System.Xml.XmlWriter
type XmlTextWriter = class
inherit XmlWriter
Public Class XmlTextWriter
Inherits XmlWriter
- 継承
注釈
XmlTextWriter クラスは、XmlWriter クラスを実装します。
Note
新しい機能を利用するには、XmlWriter メソッドと XmlWriter.Create クラスを使用してXmlWriterSettings インスタンスを作成することをお勧めします。
XmlTextWriter は、現在の要素スタックで定義されているすべての名前空間に対応する名前空間スタックを保持します。
XmlTextWriterを使用すると、名前空間を手動で宣言できます。
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x", null, "urn:1");
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
この C# コードでは、次の出力が生成されます。
XmlTextWriter は、名前空間宣言をルート要素に昇格し、2 つの子要素で重複しないようにします。 子要素は、名前空間宣言からプレフィックスを取得します。
<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</root>
XmlTextWriter では、現在の名前空間宣言をオーバーライドすることもできます。 次の例では、名前空間 URI "123" が "abc" によってオーバーライドされ、XML 要素 <x:node xmlns:x="abc"/>が生成されます。
w.WriteStartElement("x","node","123");
w.WriteAttributeString("xmlns","x",null,"abc");
プレフィックスを引数として受け取る書き込みメソッドを使用して、使用するプレフィックスを指定することもできます。 次の例では、2 つの異なるプレフィックスが同じ名前空間 URI にマップされ、XML テキスト <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>が生成されます。
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
w.Close();
異なるプレフィックスを同じ名前空間 URI にマッピングする名前空間宣言が複数ある場合、 XmlTextWriter は名前空間宣言のスタックを後方に移動し、最も近いものを選択します。
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.Formatting = Formatting.Indented;
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteAttributeString("attr","urn:1","123");
w.WriteEndElement();
w.WriteEndElement();
w.Close();
この C# の例では、 WriteAttributeString 呼び出しでプレフィックスが指定されていないため、ライターは名前空間スタックにプッシュされた最後のプレフィックスを使用し、次の XML を生成します。
<x:root xmlns:x="urn:1">
<y:item y:attr="123" xmlns:y="urn:1" />
</x:root>
名前空間の競合が発生した場合、 XmlTextWriter は代替プレフィックスを生成して解決します。 たとえば、属性と要素のプレフィックスが同じでも名前空間が異なる場合、 XmlWriter は属性の代替プレフィックスを生成します。 生成されるプレフィックスの名前は n{i} で、 i は 1 から始まる数値になります。 この数値は、要素ごとに 1 にリセットされます。
名前空間 URI に関連付けられている属性にはプレフィックスが必要です (既定の名前空間は属性には適用されません)。 これは、XML での W3C 名前空間の推奨事項のセクション 5.2 に準拠しています。 属性が名前空間 URI を参照するが、プレフィックスを指定しない場合、ライターは属性のプレフィックスを生成します。
空の要素を書き込むとき、タグ名と終了タグの間にスペースが追加されます (例: <item />)。 これにより、以前のブラウザーとの互換性が提供されます。
Stringをメソッド パラメーターとして使用する場合、nullとString.Emptyは同等です。
String.Empty は W3C 規則に従います。
厳密に型指定されたデータを書き込むには、 XmlConvert クラスを使用してデータ型を文字列に変換します。 たとえば、次の C# コードは、データを Double から String に変換し、要素 <price>19.95</price>を書き込みます。
Double price = 19.95;
writer.WriteElementString("price", XmlConvert.ToString(price));
次の事項について、XmlTextWriter ではチェックは行われません。
- 属性名と要素名の文字が無効です。
- 指定したエンコードに適合しない Unicode 文字。 Unicode 文字が指定したエンコードに適合しない場合、
XmlTextWriterは Unicode 文字を文字エンティティにエスケープしません。 - 重複する属性。
- DOCTYPE パブリック識別子またはシステム識別子の文字。
セキュリティに関する考慮事項
次の項目は、 XmlTextWriter クラスを操作するときに考慮する必要があります。
XmlTextWriter によってスローされた例外は、アプリケーションに返すことが望ましくないパス情報を開示する可能性があります。 アプリケーションで例外をキャッチし、適切に処理する必要があります。
XmlTextWriterを別のアプリケーションに渡すと、基になるストリームがそのアプリケーションに公開されます。 XmlTextWriterを半信頼アプリケーションに渡す必要がある場合は、代わりに XmlWriter メソッドによって作成されたCreate オブジェクトを使用する必要があります。
XmlTextWriterは、WriteDocTypeまたはWriteRawメソッドに渡されるデータを検証しません。 これらのメソッドに任意のデータを渡さないでください。
既定の設定が変更された場合、生成された出力が整形式の XML データであるという保証はありません。
信頼されていないソースから Encoding オブジェクトなどのサポート コンポーネントを受け入れないでください。
コンストラクター
| 名前 | 説明 |
|---|---|
| XmlTextWriter(Stream, Encoding) |
指定したストリームとエンコードを使用して、 |
| XmlTextWriter(String, Encoding) |
指定したファイルを使用して、 XmlTextWriter クラスのインスタンスを作成します。 |
| XmlTextWriter(TextWriter) |
指定した |
プロパティ
| 名前 | 説明 |
|---|---|
| BaseStream |
基になるストリーム オブジェクトを取得します。 |
| Formatting |
出力の書式設定方法を示します。 |
| Indentation |
Formattingが |
| IndentChar |
Formattingが |
| Namespaces |
名前空間をサポートするかどうかを示す値を取得または設定します。 |
| QuoteChar |
属性値を引用符で囲むのに使用する文字を取得または設定します。 |
| Settings |
このXmlWriterSettings インスタンスの作成に使用するXmlWriter オブジェクトを取得します。 (継承元 XmlWriter) |
| WriteState |
ライターの状態を取得します。 |
| XmlLang |
現在の |
| XmlSpace |
現在のXmlSpace スコープを表す |
メソッド
| 名前 | 説明 |
|---|---|
| Close() |
このストリームと基になるストリームを閉じます。 |
| Dispose() |
XmlWriter クラスの現在のインスタンスで使用されているすべてのリソースを解放します。 (継承元 XmlWriter) |
| Dispose(Boolean) |
XmlWriterによって使用されるアンマネージ リソースを解放し、必要に応じてマネージド リソースを解放します。 (継承元 XmlWriter) |
| DisposeAsync() |
アンマネージ リソースの解放、解放、またはリセットに関連するアプリケーション定義タスクを非同期的に実行します。 (継承元 XmlWriter) |
| DisposeAsyncCore() |
マネージド リソースの解放、解放、またはリセットに関連するアプリケーション定義タスクを非同期的に実行します。 (継承元 XmlWriter) |
| Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| Flush() |
バッファー内にあるものを基になるストリームにフラッシュし、基になるストリームもフラッシュします。 |
| FlushAsync() |
バッファー内にあるものを基になるストリームに非同期的にフラッシュし、基になるストリームもフラッシュします。 (継承元 XmlWriter) |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| LookupPrefix(String) |
名前空間 URI の現在の名前空間スコープで定義されている最も近いプレフィックスを返します。 |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
| WriteAttributes(XmlReader, Boolean) |
派生クラスでオーバーライドされると、 XmlReaderの現在の位置にあるすべての属性を書き出します。 (継承元 XmlWriter) |
| WriteAttributesAsync(XmlReader, Boolean) |
XmlReader内の現在の位置にあるすべての属性を非同期に書き込みます。 (継承元 XmlWriter) |
| WriteAttributeString(String, String, String, String) |
派生クラスでオーバーライドされると、指定したプレフィックス、ローカル名、名前空間 URI、および値を持つ属性を書き込みます。 (継承元 XmlWriter) |
| WriteAttributeString(String, String, String) |
派生クラスでオーバーライドされると、指定したローカル名、名前空間 URI、および値を持つ属性を書き込みます。 (継承元 XmlWriter) |
| WriteAttributeString(String, String) |
派生クラスでオーバーライドされると、指定したローカル名と値を持つ属性を書き出します。 (継承元 XmlWriter) |
| WriteAttributeStringAsync(String, String, String, String) |
指定したプレフィックス、ローカル名、名前空間 URI、および値を使用して、属性を非同期に書き込みます。 (継承元 XmlWriter) |
| WriteBase64(Byte[], Int32, Int32) |
指定したバイナリ バイトを base64 としてエンコードし、結果のテキストを書き出します。 |
| WriteBase64Async(Byte[], Int32, Int32) |
指定したバイナリ バイトを Base64 として非同期にエンコードし、結果のテキストを書き込みます。 (継承元 XmlWriter) |
| WriteBinHex(Byte[], Int32, Int32) |
指定したバイナリ バイトをbinex としてエンコードし、結果のテキストを書き出します。 |
| WriteBinHexAsync(Byte[], Int32, Int32) |
指定したバイナリ バイトを |
| WriteCData(String) |
<を書き出します。CDATA[...]]>指定されたテキストを含むブロック。 |
| WriteCDataAsync(String) |
<を非同期に書き出します。[CDATA[...]]>指定されたテキストを含むブロック。 (継承元 XmlWriter) |
| WriteCharEntity(Char) |
指定した Unicode 文字値に対して文字エンティティを強制的に生成します。 |
| WriteCharEntityAsync(Char) |
指定した Unicode 文字値に対して文字エンティティを非同期的に生成します。 (継承元 XmlWriter) |
| WriteChars(Char[], Int32, Int32) |
一度に 1 つのバッファーにテキストを書き込みます。 |
| WriteCharsAsync(Char[], Int32, Int32) |
テキストを一度に 1 つのバッファーに非同期で書き込みます。 (継承元 XmlWriter) |
| WriteComment(String) |
指定したテキストを含むコメント <!--...--> を書き出します。 |
| WriteCommentAsync(String) |
指定したテキストを含むコメント <!--...--> を非同期に書き出します。 (継承元 XmlWriter) |
| WriteDocType(String, String, String, String) |
指定した名前と省略可能な属性を使用して DOCTYPE 宣言を書き込みます。 |
| WriteDocTypeAsync(String, String, String, String) |
指定した名前と省略可能な属性を使用して、DOCTYPE 宣言を非同期に書き込みます。 (継承元 XmlWriter) |
| WriteElementString(String, String, String, String) |
指定したプレフィックス、ローカル名、名前空間 URI、および値を持つ要素を書き込みます。 (継承元 XmlWriter) |
| WriteElementString(String, String, String) |
指定したローカル名、名前空間 URI、および値を持つ要素を書き込みます。 (継承元 XmlWriter) |
| WriteElementString(String, String) |
指定したローカル名と値を持つ要素を書き込みます。 (継承元 XmlWriter) |
| WriteElementStringAsync(String, String, String, String) |
指定したプレフィックス、ローカル名、名前空間 URI、および値を持つ要素を非同期に書き込みます。 (継承元 XmlWriter) |
| WriteEndAttribute() |
前の WriteStartAttribute(String, String, String) 呼び出しを閉じます。 |
| WriteEndAttributeAsync() |
前の WriteStartAttribute(String, String) 呼び出しを非同期的に閉じます。 (継承元 XmlWriter) |
| WriteEndDocument() |
開いている要素または属性を閉じ、ライターを Start 状態に戻します。 |
| WriteEndDocumentAsync() |
開いている要素または属性を非同期的に閉じ、ライターを Start 状態に戻します。 (継承元 XmlWriter) |
| WriteEndElement() |
1 つの要素を閉じ、対応する名前空間スコープをポップします。 |
| WriteEndElementAsync() |
1 つの要素を非同期的に閉じ、対応する名前空間スコープをポップします。 (継承元 XmlWriter) |
| WriteEntityRef(String) |
エンティティ参照を |
| WriteEntityRefAsync(String) |
エンティティ参照を |
| WriteFullEndElement() |
1 つの要素を閉じ、対応する名前空間スコープをポップします。 |
| WriteFullEndElementAsync() |
1 つの要素を非同期的に閉じ、対応する名前空間スコープをポップします。 (継承元 XmlWriter) |
| WriteName(String) |
指定した名前を書き込み、 W3C XML 1.0 の推奨事項に従って有効な名前であることを確認します。 |
| WriteNameAsync(String) |
指定した名前を非同期に書き込み、W3C XML 1.0 の推奨事項 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name) に従って有効な名前であることを確認します。 (継承元 XmlWriter) |
| WriteNmToken(String) | |
| WriteNmTokenAsync(String) |
指定した名前を非同期に書き込み、W3C XML 1.0 の推奨事項 (https://www.w3.org/TR/1998/REC-xml-19980210#NT-Name) に従って有効な NmToken であることを確認します。 (継承元 XmlWriter) |
| WriteNode(XmlReader, Boolean) |
派生クラスでオーバーライドされると、リーダーからライターにすべてをコピーし、リーダーを次の兄弟の先頭に移動します。 (継承元 XmlWriter) |
| WriteNode(XPathNavigator, Boolean) |
XPathNavigator オブジェクトからライターにすべてをコピーします。 XPathNavigatorの位置は変更されません。 (継承元 XmlWriter) |
| WriteNodeAsync(XmlReader, Boolean) |
リーダーからライターにすべてを非同期にコピーし、リーダーを次の兄弟の先頭に移動します。 (継承元 XmlWriter) |
| WriteNodeAsync(XPathNavigator, Boolean) |
XPathNavigator オブジェクトからライターにすべてを非同期にコピーします。 XPathNavigatorの位置は変更されません。 (継承元 XmlWriter) |
| WriteProcessingInstruction(String, String) |
<?name text?>のように、名前とテキストの間にスペースを入れ、処理命令を書き出します。 |
| WriteProcessingInstructionAsync(String, String) |
<?name text?>のように、名前とテキストの間にスペースを入れ、処理命令を非同期的に書き出します。 (継承元 XmlWriter) |
| WriteQualifiedName(String, String) |
名前空間修飾名を書き込みます。 このメソッドは、指定された名前空間のスコープ内にあるプレフィックスを検索します。 |
| WriteQualifiedNameAsync(String, String) |
名前空間修飾名を非同期的に書き込みます。 このメソッドは、指定された名前空間のスコープ内にあるプレフィックスを検索します。 (継承元 XmlWriter) |
| WriteRaw(Char[], Int32, Int32) |
文字バッファーから生のマークアップを手動で書き込みます。 |
| WriteRaw(String) |
文字列から生のマークアップを手動で書き込みます。 |
| WriteRawAsync(Char[], Int32, Int32) |
文字バッファーから生のマークアップを手動で非同期に書き込みます。 (継承元 XmlWriter) |
| WriteRawAsync(String) |
文字列から生のマークアップを手動で非同期に書き込みます。 (継承元 XmlWriter) |
| WriteStartAttribute(String, String, String) |
属性の先頭を書き込みます。 |
| WriteStartAttribute(String, String) |
指定したローカル名と名前空間 URI を使用して、属性の先頭を書き込みます。 (継承元 XmlWriter) |
| WriteStartAttribute(String) |
指定したローカル名を持つ属性の先頭を書き込みます。 (継承元 XmlWriter) |
| WriteStartAttributeAsync(String, String, String) |
指定したプレフィックス、ローカル名、および名前空間 URI を使用して、属性の先頭を非同期に書き込みます。 (継承元 XmlWriter) |
| WriteStartDocument() |
バージョン "1.0" で XML 宣言を書き込みます。 |
| WriteStartDocument(Boolean) |
バージョン "1.0" とスタンドアロン属性を使用して XML 宣言を書き込みます。 |
| WriteStartDocumentAsync() |
バージョン "1.0" で XML 宣言を非同期に書き込みます。 (継承元 XmlWriter) |
| WriteStartDocumentAsync(Boolean) |
バージョン "1.0" とスタンドアロン属性を使用して XML 宣言を非同期に書き込みます。 (継承元 XmlWriter) |
| WriteStartElement(String, String, String) |
指定した開始タグを書き込み、指定された名前空間とプレフィックスに関連付けます。 |
| WriteStartElement(String, String) |
派生クラスでオーバーライドされると、指定した開始タグを書き込み、指定された名前空間に関連付けます。 (継承元 XmlWriter) |
| WriteStartElement(String) |
派生クラスでオーバーライドされると、指定したローカル名を持つ開始タグを書き出します。 (継承元 XmlWriter) |
| WriteStartElementAsync(String, String, String) |
指定した開始タグを非同期に書き込み、指定された名前空間とプレフィックスに関連付けます。 (継承元 XmlWriter) |
| WriteString(String) |
指定されたテキスト コンテンツを書き込みます。 |
| WriteStringAsync(String) |
指定されたテキスト コンテンツを非同期的に書き込みます。 (継承元 XmlWriter) |
| WriteSurrogateCharEntity(Char, Char) |
サロゲート文字ペアのサロゲート文字エンティティを生成して書き込みます。 |
| WriteSurrogateCharEntityAsync(Char, Char) |
サロゲート文字ペアのサロゲート文字エンティティを非同期的に生成して書き込みます。 (継承元 XmlWriter) |
| WriteValue(Boolean) |
Boolean値を書き込みます。 (継承元 XmlWriter) |
| WriteValue(DateTime) |
DateTime値を書き込みます。 (継承元 XmlWriter) |
| WriteValue(DateTimeOffset) |
DateTimeOffset値を書き込みます。 (継承元 XmlWriter) |
| WriteValue(Decimal) |
Decimal値を書き込みます。 (継承元 XmlWriter) |
| WriteValue(Double) |
Double値を書き込みます。 (継承元 XmlWriter) |
| WriteValue(Int32) |
Int32値を書き込みます。 (継承元 XmlWriter) |
| WriteValue(Int64) |
Int64値を書き込みます。 (継承元 XmlWriter) |
| WriteValue(Object) |
オブジェクト値を書き込みます。 (継承元 XmlWriter) |
| WriteValue(Single) |
単精度浮動小数点数を書き込みます。 (継承元 XmlWriter) |
| WriteValue(String) |
String値を書き込みます。 (継承元 XmlWriter) |
| WriteWhitespace(String) |
指定された空白を書き出します。 |
| WriteWhitespaceAsync(String) |
指定された空白を非同期的に書き出します。 (継承元 XmlWriter) |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IDisposable.Dispose() |
このメンバーの説明については、 Dispose()を参照してください。 (継承元 XmlWriter) |
拡張メソッド
| 名前 | 説明 |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
非同期破棄から返されるタスクの待機を実行する方法を構成します。 |