2012-03-12 6 views
0

많은 레코드가있는 텍스트 파일이 있습니다. 각 레코드는 xml 요소입니다. 각 레코드는 텍스트로 구분됩니다 - RECORD_BREAK. 레코드를 읽는 동안파일의 머리글과 바닥 글을 읽는 프로그램

는 예는

<customer><name>John</name><phone>123-345-1123</phone></customer> 
RECORD_BREAK 
<customer><name>John</name><phone>123-345-1123</phone></customer> 
RECORD_BREAK 
<customer><name>John</name><phone>123-345-1123</phone></customer> 
RECORD_BREAK 
<customer><name>John</name><phone>123-345-1123</phone></customer> 
RECORD_BREAK 

, 제가

의해

문자열 [] = xml.split 문자열 ("RECORD_BREAK")을 각 레코드를 분할;

이제 파일의 머리글과 바닥 글을 추가해야합니다. 이것은 파일이 손상되지 않았 음을 나타냅니다. 파일의 머리말과 꼬리말을 읽는 법. 머리글과 바닥 글은 간단합니다.

<CustomerInfo> 
<customer><name>John</name><phone>123-345-1123</phone></customer> 
RECORD_BREAK 
<customer><name>John</name><phone>123-345-1123</phone></customer> 
RECORD_BREAK 
</CustomerInfo> 

레코드를 분할하기 전에 레코드의 시작과 끝에서 태그와 태그를 확인할 수 있습니까?

+1

왜 XML 파일에 레코드 구분 표식이 필요합니까? 이미 태그로 구분 된 레코드가 있습니다. XML 파서를 사용하여 모든 것을 파싱하십시오 (특히 최상위 CustomerInfo 태그로 래핑 한 후 쉽게). 이것은 또한 머리말과 꼬리말이 제공하는 "부패 확인"수준이 최소한 비슷할뿐 아니라 일부 고객의 이름이 "Little Bobby Tables RECORD_BREAK"인 경우 실패하지 않습니다. – Thilo

+0

각 레코드에 대해 RECORD_BREAK를 추가하는 것은 기존 기능이므로 변경할 수 없으므로 현재 요구 사항은 머리글과 바닥 글을 확인하는 것입니다. – minil

+0

XML 파서를 사용하여 파일을 구문 분석 할 수 있습니다 (RECORD_BREAK 파일 있음). 헤더가 바닥 글과 일치하지 않으면 유효한 XML이 아니며 파서가 알려줍니다. – Thilo

답변

2

이상적으로 파일에 RECORD_BREAK 마커가 없으므로 필요하지 않습니다. 이미 태그로 구분 된 레코드가 있습니다. XML 파서를 사용하여 모든 것을 파싱하십시오 (특히 최상위 CustomerInfo 태그로 래핑 한 후 쉽게).

이렇게하면 머리말과 꼬리말이 제공하는 "손상 체크"수준이 최소한 비슷해지며 일부 고객의 이름이 "Little Bobby Tables RECORD_BREAK"인 경우 실패하지 않습니다.

XML 파서를 사용하여 파일을 (지금은 RECORD_BREAK으로) 파싱 할 수 있습니다. 머리글이 바닥 글과 일치하지 않으면 올바른 XML이 아니며 파서가 알려줍니다 (잘못된 고객 태그 내용도 알려줍니다). 결과는 고객 노드와 텍스트 노드의 좋은 시퀀스가됩니다 (레코드 중단).

관련 문제