XML 엔터티 확장을 위한 명령줄 도구

XML 엔터티 확장을 위한 명령줄 도구

테스트 스크립트의 일부로 XML 데이터를 시스템에 입력해야 합니다.

테스트 스크립트 자체는 쉘 스크립트입니다.

XML 데이터의 속성에는 현재 시간과 가까워야 하는 타임스탬프가 포함되어 있습니다. (실제로 두 개의 타임스탬프가 있습니다. 하나는 현재 시간 근처이고 다른 하나는 미래의 몇 분에서 몇 시간 사이입니다.) 나머지 데이터는 정적입니다(즉, 각 테스트마다 하나씩 다른 XML 파일 세트가 있습니다). ).

외부 엔터티를 사용한 다음 스크립트를 통해 엔터티 정의를 생성하여 이 문제를 해결할 생각입니다. 문제: 소비자 시스템은 XML의 하위 집합만 지원합니다(glib XML 파서에 따라 다름).

그래서 내 다음 아이디어는 외부 엔터티를 구문 분석하고 모든 엔터티로 확장되고 콘텐츠를 포함하는 플랫 파일 XML을 출력하는 파서를 통해 XML을 실행하는 것이었습니다. 명령줄 도구(바람직하게는 Debian/Ubuntu 저장소)로 사용할 수 있는 파서가 있습니까?

답변1

xmlstarlet이는 이 문제를 해결하며 Ubuntu 저장소(16.04 기준)에서 사용할 수 있으며 아마도 Debian 저장소에서도 사용할 수 있습니다.

구문은 다음과 같습니다.

xmlstarlet c14n foo.xml > bar.xml

bar.xmlfoo.xml모든 엔터티가 확인된 의 정규화된 버전이 됩니다 .

관련 정보