테스트 스크립트의 일부로 XML 데이터를 시스템에 입력해야 합니다.
테스트 스크립트 자체는 쉘 스크립트입니다.
XML 데이터의 속성에는 현재 시간과 가까워야 하는 타임스탬프가 포함되어 있습니다. (실제로 두 개의 타임스탬프가 있습니다. 하나는 현재 시간 근처이고 다른 하나는 미래의 몇 분에서 몇 시간 사이입니다.) 나머지 데이터는 정적입니다(즉, 각 테스트마다 하나씩 다른 XML 파일 세트가 있습니다). ).
외부 엔터티를 사용한 다음 스크립트를 통해 엔터티 정의를 생성하여 이 문제를 해결할 생각입니다. 문제: 소비자 시스템은 XML의 하위 집합만 지원합니다(glib XML 파서에 따라 다름).
그래서 내 다음 아이디어는 외부 엔터티를 구문 분석하고 모든 엔터티로 확장되고 콘텐츠를 포함하는 플랫 파일 XML을 출력하는 파서를 통해 XML을 실행하는 것이었습니다. 명령줄 도구(바람직하게는 Debian/Ubuntu 저장소)로 사용할 수 있는 파서가 있습니까?
답변1
xmlstarlet
이는 이 문제를 해결하며 Ubuntu 저장소(16.04 기준)에서 사용할 수 있으며 아마도 Debian 저장소에서도 사용할 수 있습니다.
구문은 다음과 같습니다.
xmlstarlet c14n foo.xml > bar.xml
bar.xml
foo.xml
모든 엔터티가 확인된 의 정규화된 버전이 됩니다 .