빈 XML 파일을 인식하시겠습니까?

빈 XML 파일을 인식하시겠습니까?

보고 목적으로 모든 빈 XML 파일 이름을 식별하고 이를 텍스트 파일에 작성해야 합니다. 여기서 비어 있다는 것은 xml 파일에 일반적인 헤더 태그가 있고 <?xml version="1.0" encoding="UTF-8"?>그 뒤에 빈 열기 및 닫기 태그가 있음을 의미합니다.

예시 파일: 1)

<?xml version="1.0" encoding="UTF-8"?>
<STBTests>
</STBTests>

2)

<?xml version="1.0" encoding="UTF-8"?>
<UMTTests>
</UMTTests>

그 외에는 xml 파일에 데이터가 없습니다. 이 문제를 해결하는 방법에 대한 제안이 있으면 좋을 것입니다.

답변1

이것을 사용해보십시오표현하다:

#!/bin/sh

for xml in *.xml; do
    bool=$(xmllint --xpath 'count(//*)=1 and string-length(//*[1])=1' "$xml")
    if [ $bool = true ]; then
        echo "$xml" >> xml_list_files
    fi
done

cat xml_list_files

이 표현식은 파일에 노드가 하나만 있고 텍스트 콘텐츠가 없는지 테스트합니다. 이 경우 명령은 다음을 반환합니다.true

답변2

빈 xml 파일 이름을 모두 식별하고 보고 목적으로 텍스트 파일에 기록합니다.

find+xmlstarlet해결책:

find . -type f -name "*.xml" -exec bash -c \
'v=$(xmlstarlet sel -t -i "count(//*)=1 and //*[1][not(normalize-space())]" -o 1 -b $1);
[[ -n "$v" ]] && echo "$1" >> "empty_xml.txt"' _ {} \;

empty_xml.txt파일에는 필수 파일 이름/파일 경로 목록이 포함되어야 합니다.

관련 정보