EDIFACTの解析は、実際には複雑ではありません。単にsytaxの文字で分割:最初に'
でセグメントを取得するには、+
より、そのセグメントのデータ要素を取得し、:
で個々のコンポーネントを取得します。もちろん、エスケープされたセパレータ文字を処理する必要があります。ここで使用されている文字はデフォルトのものに過ぎず、オプションのUNAセグメントによってメッセージの先頭で変更することができます。実際には、EDIFACTのwikipedia articleはそれについてかなり良い(しかし簡単な)紹介を与えます。フォーマットはUN's UNECE siteで詳細に文書化されています(はい、読みにくいです)。
トリッキーな部分は、その外に、アプリケーションに情報を取得することです(との良好なエラーメッセージを作成残すだけで、それが有効だ検証します)。あなたが実際にどの言語のものであれ、何もしないで、comleteパーサーを書くつもりなら、いいえ、これを行う簡単な方法はありません。その他の柔軟なデータ表現はありません。そのはであり、常に困難な作業です。
しかし、ここにはアイデアがあります。あなたがそれほど多くのXML(または他の「現代技術」と呼んでいるのですが...)。 EDIFACTメッセージを統一されたXML-EDIFACT-Format(かなり恐ろしいことであり、おそらく私を驚かせるでしょう)に変換するプログラムを書くのは、比較的簡単な作業です。そして、あなたが評価/検証することであなたのXMLツールとライブラリの力を発揮することができます
<segment qualifier="ERC">
<element>
<component>A7V</component>
<component>1</component>
<component>AMD<component>
</element>
</segment>
<segment qualifier="IFT">
<element>
<component>3</component>
</element>
<element>
<component>NO MORE FLIGHTS</component>
</element>
</segment>
:XMLで
ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'
:あなたは多分このように、1つのXMLタグにすべてのEDIFACTセグメントを変換することができますそれ。
また、このように、それはより具体的な行うことができます:
<segment_ERC>
<element>
<component>A7V</component>
<component>1</component>
<component>AMD<component>
</element>
</segment_ERC>
<segment_IFT>
<element>
<component>3</component>
</element>
<element>
<component>NO MORE FLIGHTS</component>
</element>
</segment_IFT>
これは、XSDを経由して、検証容易にすることができます。あなたはこの会話で必要なだけ具体的に得ることができますが、遅かれ早かれ、現在解析されているメッセージの構造に関する情報をコンバーターに入れる必要があります。 UNG
、UNH
などではなく、直接表示されないセグメントグループもあります)。
まだ、ドキュメントとして入手する必要があるEDIFACTハンドブックに従って、受け取ったメッセージのための特定の評価プログラム/スキーマ/ whaversを作成する必要があります。