Определите все XML-файлы с определенным форматом - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь найти xmls, у которых нет действительных данных, и не обрабатывать их.Например, ниже приведен правильный XML со всеми доступными данными, которые должны обрабатываться

(Loop Xpath используется для чтения данных из файлов XML - Invoicing / Invoice / Serials / SerialNumber):

<?xml version='1.0' encoding='UTF-8'?>
<Invoicing>
    <Invoice>
        <VendorName>Contec</VendorName>
        <InvoicePeriod>May</InvoicePeriod>
        <InvoiceDt>2019-05-11</InvoiceDt>
        <InvoiceNo>20190511</InvoiceNo>
        <Serials>
            <SerialNumber>
                <TestLoc>HNMA01</TestLoc>
                <EISSerial>PKQPLPXJC</EISSerial>
                <ComcastModel>PX022ANC</ComcastModel>
                <RMANo />
                <ReceiptDt>05/09/2019</ReceiptDt>
                <RepairDt>05/11/2019</RepairDt>
                <Parts>
                    <Part>
                        <PartType>Cosmetic</PartType>
                        <PartId>SERVICEBUFFING</PartId>
                        <PartDescr>BUFF SERVC</PartDescr>
                        <ActionCd>RA003</ActionCd>
                        <FSC>FS005</FSC>
                    </Part>
                </Parts>
            </SerialNumber>
        </Serials>
    </Invoice>
</Invoicing>

Я также получаю XML в следующем формате,

<?xml version="1.0" encoding="UTF-8"?>
<Invoicing>
    <Invoice>
        <VendorName>Contec</VendorName>
        <InvoicePeriod>May</InvoicePeriod>
        <InvoiceDt>2017-05-01</InvoiceDt>
        <InvoiceNo>20170501</InvoiceNo>
        <Serials></Serials>
    </Invoice>
</Invoicing>

Приведенный выше xml, даже если он действителен, неверен. Я хочу определить xmls, которые находятся во втором формате беззаполните данные и переместите их в папку с ошибками.

Спасибо, Кавин

1 Ответ

0 голосов
/ 15 мая 2019

Решение этого вопроса заключается в следующем:

Мне удалось добиться того, чего я хотел, с помощью решения, предоставленного @ EdMorton.

grep -L '<SerialNumber>' *.xml

Но я хотел сделать это с помощью парсера xml.

count=$(xmllint --xpath "count(//SerialNumber)" "$xml")

Когда счетчик равен нулю, я реализовал свою логику.

Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...