2008-09-15 6 views
1

ksh 스크립트에서 기본 XML (하나의 루트 요소, 3-4 하위 요소, 1-3 개의 특성 각각)을 구문 분석해야합니다 (스크립트가 이미 존재하고 주어진 다른 프로그램에 의한 XML).ksh를 사용하여 XML을 파싱하는 가장 비용이 많이 드는 크로스 플랫폼 방식은 무엇입니까?

sed를 사용하고 패턴 일치를 수행 할 수 있지만 입력 XML이 변경 될 수 있고 특성이 다양한 하위 요소 (또는 새 하위 요소)에 복제 될 수 있다는 점을 고려하면 확실하지 않습니다.

지금까지 XML에 대해 XSLT를 사용하여 ksh 스크립트가 개별 필드를 고려하는 몇 가지 속성 (특정 요소 용)을 추출하려고 생각했습니다. 오라클은 DB 기반 제품이기 때문에 오라클을 사용할 수 있습니다. 오라클은 항상 우리 시스템에 설치 될 것입니다. 그러나 이것은 약간 무거운 것 같습니다.

타사 구문 분석기/변환기에 대한 액세스가 필요없는 플랫폼 간 방식으로 입력 XML에서 특정 특성을 추출하는 다른 안전한 방법은 무엇입니까?

답변

0

ksh에서 완전히 할 수는 없지만 python xml을 사용해 보시겠습니까?

경량을 원한다면 libxml2와 작은 C 프로그램을 사용해보십시오.

1

쉘 스크립트에서 모두 유지하는 것이 중요하다면이 pure bash implementation을 살펴볼 수 있습니다.

즉, 파이썬과 펄과 같은 다른 스크립팅 언어는 휴대 성이 뛰어나므로 훨씬 쉽게 사용할 수 있습니다. Perl의 XML::Twig 모듈에는 "xml_grep"이라는 최종 사용자 스크립트가 있습니다.이 스크립트는 복잡한 검색에서 발견 된 노드의 텍스트 만 추출하기 위해 이미 --text_only 옵션을 전달할 수 있습니다. 지정된 속성을 반환하기 위해 그것을 수정하는 것이 훨씬 더 어렵지 않아야합니다.

1

"구문 분석"의 의미에 따라 XMLStarlet을 선택하는 것이 좋습니다. 완전히 명령 행 기반이며 XSLT뿐만 아니라 XML 파일의 선택 및 편집을 지원합니다.

0

구문 분석에 CSV를 사용하면 논리를 단순화 할뿐만 아니라 xls에서 csv 로의 변환이 쉽게 이루어집니다.