XMLファイルでnull値を識別し、終了コマンドを返しますか? [閉鎖]

XMLファイルでnull値を識別し、終了コマンドを返しますか? [閉鎖]

たとえば、「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

ベストアンサー1

おすすめ記事