ホームページ  >  記事  >  Java  >  .NET FrameworkでXMLデータを簡単に処理する(4-1)

.NET FrameworkでXMLデータを簡単に処理する(4-1)

黄舟
黄舟オリジナル
2016-12-20 14:12:321413ブラウズ

??XmlTextWriter クラス

??このセクションのメソッドを使用して XML ドキュメントを作成することは、明らかに難しくありません。長年にわたり、開発者はキャッシュ内のいくつかの文字列を連結し、キャッシュされた文字列をファイルに出力することによって XML ドキュメントを作成してきました。ただし、この方法での XML ドキュメントの作成は、文字列に小さなエラーがないことを確認した場合にのみ機能します。 .NET Framework は、XMLwriter を使用して XML ドキュメントを作成するためのより優れた方法を提供します。

??XML Writer クラスは、順方向専用メソッドで XML データをストリームまたはファイルに出力します。さらに重要なのは、XML Writer はすべての XML データが W3C XML 1.0 推奨仕様に準拠するように設計されているため、終了タグは XML Writer が自動的に作成するため、書き忘れる心配もありません。 XmlWriter は、すべての XML ライターの抽象基本クラスです。 .NET Framework が提供するライター クラスは、XmlTextWriter クラス 1 つだけです。

?? まず、XML ライターと古いライターの違いを見てみましょう。次のコードは文字列型の配列を保持します。

sb.Append('' ); ;

foreach(配列内の文字列) {

sb.Append('<要素値="" ');'=""
sb.Append(s)

sb.Append(''/ >) ;');

}

sb.Append('');

??このコードは、ループを通じてデータ内の要素を取り出し、ラベル テキストを書き込み、それらを文字列に追加します。このコードは、出力コンテンツが適切にフォーマットされていることを確認し、改行のインデントに注意を払い、名前空間をサポートします。作成する文書構造が比較的単純な場合、この方法でエラーが発生することはありません。ただし、ディレクティブ、名前空間、インデント、書式設定、およびエンティティの処理をサポートする必要がある場合、コードの量は指数関数的に増加し、エラーの可能性も増加します。

??XML ライターの記述メソッド関数は、考えられるすべての XML ノード タイプに対応しており、XML ドキュメントの作成プロセスがより論理的になり、煩わしいマークアップ言語への依存が少なくなります。図 6 は、XmlTextWriter クラスのメソッドを使用して文字列データを接続する方法を示しています。コードは非常に簡潔で、XML ライターを使用したコードの方が読みやすく、構造も優れています。

図 6 文字列配列のシリアル化

void CreateXmlFileUsingWriters(String[] theArray, string filename)

{

// XML ライターを開きます (デフォルトの文字セットで)

XmlTextWriter xmlw = new XmlTextWriter(filename, null ) ;

xmlw.Formatting = Formatting.Indented; () ;

}

xmlw.WriteEndDocument();

}

?? ただし、XML ライターは入力エラーを修正できません。 XML ライターは、要素名と属性名が有効であるかどうかをチェックしません。また、使用されている Unicode 文字セットが現在のアーキテクチャのエンコード セットに適切であるかどうかも保証しません。前述したように、出力エラーを回避するには、非 XML 文字を削除する必要があります。しかし、筆者はこの方法を提供していません。

??さらに、属性ノードを作成するとき、Writer は属性ノードの名前が既存の要素ノードの名前と同じかどうかをチェックしません。最後に、XmlWriter クラスは検証済みの Writer クラスではないため、出力がスキーマまたは DTD に準拠しているかどうかは保証されません。 .NET Framework で検証を行うライター クラスは現在提供されていません。しかし、私の著書『Applied XML Programming for Microsoft .NET (Microsoft Press®, 2002)』では、検証付きの Writer コンポーネントを作成しました。ソース コードは次の URL からダウンロードできます: http://www.microsoft.com/MSPress/books/6235.asp

?? 図 7 は、XML ライターのいくつかのステータス値 (状態) を示しています。 。これらの値は、WriteState 列挙クラスから派生します。ライターを作成するときの初期状態は「開始」であり、これからオブジェクトを構成することを示しますが、実際にはライターは開始されていません。次の状態は Prolog です。これは、WriteStartDocument メソッドを呼び出して作業を開始するときに設定されます。そして、状態遷移は作成する文書と文書の内容に応じて異なります。プロローグの状態は、アノテーション要素、処理命令、ドキュメント タイプなどの非要素ノードを追加するまで保持されます。最初のノード (ルート ノード) が書き込まれると、ステータスは Element に変わります。状態は、WriteAtributeString メソッドを呼び出して属性を書き込むときではなく、WriterStartAtribute メソッドを呼び出すときに Attribute に変換されます。その場合、ステータスは Element になるはずです。終了タグ(>)を書くと状態がContentに変換されます。ドキュメントの書き込みが終了したら、WriteEndDocument メソッドを呼び出します。別のドキュメントの書き込みを開始するか、Writer をオフにするまで、ステータスは Start に戻ります。


以上が .NET Framework で XML データを簡単に処理する内容 (4-1) です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。