2010-05-06 8 views
2

시나리오 : 나는 업로드 된 텍스트 기반 파일 형식으로 데이터 입력을하는 레일 응용 프로그램을 만들고 있습니다. 데이터를 가져 오기 전에 이러한 파일을 구문 분석해야합니다. 앱에 업로드 된 파일 형식을 선택할 수 있습니다. 업로드하는 사람들이 사용하는 소프트웨어 (Microsoft Access)에는 파일 형식과 관련된 여러 가지 내보내기 옵션이 있습니다.구문 분석에 가장 적합한 파일 형식은 무엇입니까?

비록 중요하지는 않지만, 가장 효율적으로 구문 분석되는 특정 파일 형식이 있는지 궁금합니다. 이 질문은 언어 독립적이라고 볼 수 있습니다.

는 (XML은 일반적으로 구문 분석하는 동안,이 프로젝트의 이익을 위해 실현 가능한 파일 형식이 아닙니다.)

+3

이 질문은 끝이 너무 열려 있습니다. 어떤 종류의 데이터를 가져오고 있습니까? CSV가 작동합니까? YAML이 효과가 있습니까? –

+0

작업을 수행하기에 충분하고 구문 분석 할 기존 도구가 있습니까? 제출자 중 하나가 방출 할 도구가 있습니까? 사람이 도구없이 안정적으로 쓸 수있는 것일까 요? 세부 사항은 여기에 중요합니다 ... – dmckee

+1

XML이 적절하지 않은 이유를 알지 못하는 한 좋은 대답을하는 것은 정말 어렵습니다. 파일이 설명해야하는 데이터의 복잡성은 또한 많은 것을 의미합니다. 아마도 CSV 또는 Ini 파일 형식과 같은 것을 고려해보십시오. – Svend

답변

2

Access에서 내 보낸 것이라면 가장 쉬운 방법은 CSV입니다. 특히 Ruby에는 standard library에 CSV 파서가 포함되어 있기 때문에. CSV의 방언 (구분 기호로 사용하는 것, 따옴표를 처리하는 방법)을 결정하는 작업을해야합니다. 루비 파서가 그 문제에 얼마나 견고한 지 모르지만 Microsoft Access로부터 어느 정도 통제해야합니다.

2

당신은 JSON를 살펴 할 수 있습니다. 가벼운 형식이기 때문에 XML과 달리 백엔드에서 거대한 라이브러리가 필요없이 구문 분석이 쉽고 깨끗합니다.

그것은 같은

+0

내가 잘못 본 것이 아니라면 JSON은 Microsoft Access에서 내보낼 수있는 형식이 아닙니다. 내 앱에 업로드 할 파일이 액세스 내보내기라는 것을 언급하지 않은 것에 대해 사과드립니다. – anxiety

+0

귀하의 잘못이 아니므로 모든 태그를 읽었어야합니다 :) – LukeN

0

내가 제안 N-SV의 문자열, 숫자, assosiative 배열 (객체) 및 목록과 같은 유형을 나타내는 수있는 데이터에 대한은 포함되지 는 않습니다 (여기서 N 어떤 문자입니다) n. 그러면 파일을 렉싱하는 것이 split의 문제가됩니다.

더 유연한 데이터가 있다면 JSON을 제안 할 것입니다.

+0

CSV (또는 n-SV)는 구분 기호 자체를 포함해야한다고 생각하기 때문에 CSV (또는 n-SV)는 매우 어렵습니다. – JoelFan

+0

CSV가 조건에 따라 사용 : 1. 내 앱에 업로드 된 파일은 ms 액세스 내보내기 입니다. 2.나는 루비를 파싱 할 것입니다. – anxiety

+0

@anxiety : JoelFan이 제기 한 조건을 검토해야합니다. CSV가 있고 그 안에'... ","blah, foo ", ...가 포함 된 문자열이 있으면 모든 종류의 * 재미 *가있을 것입니다. 유럽 ​​번호를 수락하면 쉼표가 수시로 발견됩니다. 또한 1,000,000 개의 사람이 읽을 수있는 숫자 형식이 있습니다. 제 요점은 "데이터가 복잡하면 CSV 엔진을 얻으십시오"입니다. –

0

파서를 굴려야하는 경우 CSV 또는 구분 기호로 구분 된 형식을 제안합니다.

다른 라이브러리를 사용할 수 있다면 많은 옵션이 있습니다. JSON은 매우 매력적입니다.

+0

CSV (또는 n-SV)는 구분 기호 자체를 포함하여 설명해야하기 때문에 매우 어렵습니다. – JoelFan

+0

어렵지 만 실행 가능합니다. 다음은 Java 기반 예제입니다. [parseCsv] (http://stackoverflow.com/questions/2241915/regarding-java-string-manipulation/2241950#2241950) 및 [writeCsv] (http://stackoverflow.com/questions/477886)/jsp-generating-excel-spreadsheet-xls-to-download/2154226 # 2154226). – BalusC

+0

정말요? 나는 꽤 단순한 무언가가 작성 될 수 있다고 생각할 것이다. 아마 유연하지는 않지만 적어도 그의 문제를 해결할 수있을 것이다. – Robb

관련 문제