예를 들어, "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