구문 분석 EDIFACT는 실제로 그렇게 복잡하지 않습니다. 그냥 sytax 문자에서 분할 : 첫 번째 '
에서 세그먼트를 얻으려면보다 +
에서 해당 세그먼트의 데이터 요소를 얻으려면 :
에서 개별 구성 요소를 얻으십시오. 물론 이스케이프 처리 된 분리 문자를 처리해야합니다. 여기에 사용 된 문자는 기본값 뿐이므로 옵션 UNA 세그먼트로 메시지 시작 부분에서 변경할 수 있습니다. 사실 EDIFACT의 wikipedia article은 꽤 좋은 (그러나 간략한) 소개를 제공합니다. 형식은 UN's UNECE site (자세한 내용은 읽기 어렵습니다)에 자세히 설명되어 있습니다.
까다로운 부분은 정보를 응용 프로그램에서 가져와 (그리고 유효한지 확인하고 좋은 오류 메시지를 만드는 것입니다). 모든 언어로 된 모든 것에 대해 comlete 파서를 쓸 계획이라면 다음과 같이하십시오. 아니요, 쉬운 방법은 없습니다. 다른 유연한 데이터 표현을 위해 존재하지도 않습니다. 그 은이고 어려운 작업이 항상있을 것입니다.
하지만 여기에 대한 생각이 있습니다. XML을 많이 사용하면 (또는 다른 "현대 기술"이라고 부르는 것처럼 ...). EDIFACT 메시지를 통일 된 XML-EDIFACT-Format으로 변환하는 프로그램을 작성하는 것은 비교적 쉬운 일이 될 것입니다 (이것은 매우 끔찍한 일이며, 아마도 나를 놀라게 할 것입니다). 당신은 아마 다음과 같이 하나 개의 XML 태그에 모든 EDIFACT 세그먼트를 변환 할 수 있습니다 XML에서
ERC+A7V:1:AMD'
IFT+3+NO MORE FLIGHTS'
:
<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 도구 및 라이브러리의 힘을 발휘할 수/평가 그것.
당신은 다음과 같이 더 구체적인 또한 할 수 있었다 :
<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- 핸드북에 따라받는 메시지에 대한 구체적인 평가 프로그램/스키마/whatevers를 만들어야합니다.