さまざまな形式 (カンマまたはタブ区切りのファイルからより読み込み可能な形式まで) で保存または送信されたデータを処理する必要があり、各形式に対応する解析が必要になる状況によく遭遇します。この欠点により開発が遅くなり、エラーが発生する可能性があります。解決策の 1 つは、一般的に使用される形式のデータを XML ドキュメントに変換し、保存、処理、または他の形式に変換することです。
例
現在、ソフトウェア内またはソフトウェア間でデータの保存、エクスポート、インポート、転送機能を実装するデータ形式が多数あります。最も一般的なのは、カンマまたはタブで区切られたデータ形式や固定長データ形式などの区切り形式です。データをカンマ区切りの固定長形式にエクスポートする機能を提供するアドレス帳プログラムがあるとします。
リスト A に示すように、カンマ区切り形式では、同じデータ レコード内の異なるフィールドを区切るためにカンマが使用されます。固定長データ形式では、レコードの各フィールドは標準の長さである必要があります。リスト B は、固定長形式のアドレス帳を示しています。
XML ドキュメントの作成
それでは、入力データを解析して XML ドキュメントに変換しましょう。 XML ドキュメント (つまり org.w3c.dom.Document) は、ドキュメント オブジェクト モデル (DOM) 全体の基本的なデータ型であり、ドキュメント データへのアクセスを提供します。
コード リスト C に示すように、buildDocument(InputStream is) メソッドを実行することで、データに対応するドキュメントを作成できます。このメソッドは、入力データ ストリームを 1 行ずつ読み取り、指定されたグリッドに従って 1 行ずつ分析します。
区切り文字で区切られた形式のデータを解析したい場合は、コンストラクター PlainTextToXmlFormatter(String[ ]colName,String delim) を使用してクラスのインスタンスを作成する必要があります。区切り文字には任意の文字列を使用できます。固定長形式の場合は、フィールド長の配列を 1 つのパラメーターとして受け取る 2 番目のコンストラクター PlainTextToXmlFormatter(String[ ]colName,int[ ]colLen) を使用する必要があります。先ほどのアドレス帳の例では、各フィールドの長さはそれぞれ 10、10、30、10 文字です。パラメータ ColName は、ターゲット データ レコードの名前を格納する配列です。この例では、名前は名 (firstName)、姓 (lastName)、電子メール、電話番号 (phone) です。
データ行をデータシンボルに変換する実際の解析プロセスは、getStringArray(String read, String delim) メソッドまたは parseFixedLengthMessage(String read, int[ ]colLen) メソッドを実行するプロセスです。戻り値は String 配列で、指定された入力を上記の 2 つのメソッドで分解することで取得されます。データ形式が正しくない場合、例外がスローされ、解析エラーが終了します。 setSkipError(true) メソッドを呼び出して例外を無視し、データ解析プロセスを完了します。このメソッドを呼び出すと例外がスローされなくなりますが、プログラムはエラー情報をエラー出力ストリームに出力できます。
行がタグに解析されると、XML ドキュメントの要素として XML ドキュメントに追加されます。要素に配置されるレコードの各行には、デフォルトの名前行があります。setDataLineName() を呼び出して名前を指定することもできます。各データ レコードは列要素であり、列要素の名前は対応するクラス コンストラクターによって提供され、子要素が行要素に追加されます。
入力データが完全に読み取られると、有効な XML ドキュメントが得られ、さらに処理できます。データはよく知られたツリー構造で編成されているため、その操作は非常に簡単です。たとえば、このドキュメントを第三者に送信できます。第三者は、ドキュメントのドキュメント タイプ定義 (Document Type Definition、DTD) を知っていれば、そのドキュメントを簡単に処理できます。 writeDocument(Document doc, OutputStream osOut) メソッドを呼び出して、このドキュメントを保存することもできます。コード リスト D は、XML ドキュメントをファイルに保存する例を示しています。
XSLT 変換を使用してデータを表示する
XML データを他の形式に変換し、さまざまなビューを使用してそのコンテンツを表すこともできます。最も簡単な方法は、XSLT 変換を使用することです。XSLT 変換は、1 つの語彙を使用する XML インスタンスを、他の語彙を使用する単純なテキスト、HTML、または XML に変換できる、強力なツリー指向の変換言語実装を提供します。
特定の XML 入力に対して、XSLT 言語を使用して目的の出力を作成できます。たとえば、transformData(InputStream xmlIn、InputStream xslIn、OutputStream transfOut) を実行すると、XML データを HTML ドキュメントに変換できます。リスト E は XSLT 変換の例を示し、リスト F はアドレス帳エントリの HTML ビューを示します。
データ管理を簡素化する
この記事では、PlainTextToXmlFormatter クラスを分析することで、一般的に使用される形式のデータを XML ドキュメントに変換する方法を学びました。また、XSLT 変換を利用して XML ドキュメントをさまざまなビューで表現する方法についても説明しました。さまざまな形式のデータを処理する必要がある場合、上記のテクノロジを採用することは良い解決策となる可能性があり、貴重な時間を節約し、エラーの可能性を減らします。
上記は、データを XML 形式に変換する利点について詳しく説明したものです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。