![XML 파일에서 null 값을 식별하고 종료 명령을 반환하시겠습니까? [폐쇄]](https://linux55.com/image/179949/XML%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20null%20%EA%B0%92%EC%9D%84%20%EC%8B%9D%EB%B3%84%ED%95%98%EA%B3%A0%20%EC%A2%85%EB%A3%8C%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EB%B0%98%ED%99%98%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
예를 들어, "NAME" 작성자에 대한 "VALUE"가 포함되어 있고 담당자가 비어 있는 XML 파일이 있습니다. 주요 목적은 null 값이 있는 XML 파일을 찾는 데 사용할 수 있는 검사를 구현하는 것입니다. 따라서 스크립트에 대한 입력이 git commit(해당 저장소의 모든 파일) 또는 git commit(파일 이름)이 되도록 git 후크(사전 커밋)로 사용할 수 있는 스크립트를 생성하는 방법이 있습니까? 그런 다음 XML 파일에 Null 값이 있으면 스크립트는 제출을 허용하지 않아야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<PACKAGE format-rev="7" prog-version="2020.2.98572" xmlns=https..." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<INFORMATION format-rev="2" xsi:type="packageInfo">
<ATTRIBUTES>
<ATTRIBUTE xsi:type="attributeInst">
<NAME xsi:type="string">Type</NAME>
<VALUE xsi:type="string">MANUAL</VALUE>
</ATTRIBUTE>
<ATTRIBUTE xsi:type="attributeInst">
<NAME xsi:type="string">Severity</NAME>
<VALUE xsi:type="string">Normal</VALUE>
<ATTRIBUTE xsi:type="attributeInst">
<NAME xsi:type="string">Author</NAME>
<VALUE xsi:type="string"/>
</ATTRIBUTE>
<ATTRIBUTE xsi:type="attributeInst">
<NAME xsi:type="string">Assignee(s)</NAME>
<VALUE xsi:type="string"/>
</ATTRIBUTES>
아래에 표시된 것보다 더 좋은 방법이 있습니까? 티아
def xmlvalidator():
dirlist = []
dirlist.append(os.getcwd().replace("\\","/"))
filelists = filelist(dirlist)
Flagvallists = []
for filename in filelists:
xtree = et.parse(filename)
root = xtree.getroot()
xroot = root[0][0]
flag = 0
flagval = []
for i in range(len(xroot)):
#xroot here should ATTRIBUTES (ATTRIBUTE IN ATTRIBUTES)
s_name = xroot[i][0].text
s_value = xroot[i][1].text
if s_value == None:
flagval.append(s_name)
flag = 1
if flag==1:
flagval.append(filename)
Flagvallists.append(flagval)
#sys.exit(1)
#return True
return Flagvallists
편집: @Paul_Pedant에게 감사드립니다. 간단하고 훌륭한 솔루션처럼 보이지만 어떻게 입력이 git commit 호출의 입력과 동일할 수 있습니까? 파일 이름(A.xml) 대신
if grep "<VALUE[^>]*/>" A.xml; then
echo errors found
else
echo not found
fi