【问题标题】:checking well formed xml and logging the error to file检查格式正确的 xml 并将错误记录到文件中
【发布时间】:2015-12-08 00:12:03
【问题描述】:

我在文件夹 a、b、c 和 d 中有 4,000 个 xml 文件 每个文件夹包含 1000 个文件。所有文件夹都在名为 library 的主文件夹中 我需要使用

检查 xml 文件的格式是否正确

xmllint --noout 100.xml"

命令或可能有更好的东西。 现在以防万一,将文件名和文件夹名记录在日志文件中。

记录“库/a/100.xml”

下面是伪代码。我需要构建脚本以在 shell 脚本中运行或更快

#program check xml format
#!/bin/bash
echo Please, get ready to process
 for i in $(cat "/home/thrinity/library/);
  do
    xmllint --noout "$i" ;
    if error
      #log filefolder & file name
      print error to errorlog.txt
    else
end do

我正在寻找缺少标签的错误.. 类似.. 038339 此处缺少发票结束标签或任何我可以捕获的方式

对于那些可能感兴趣的人。下面的代码在 Ubuntu 14.04 机器上为我工作

find /YourMainFolder -name '*.xml' -print | xargs -I "{}" sh -c 'File="{}";xmllint --noout "${File}" || readlink -f {} >> errorlog.txt

【问题讨论】:

    标签: xml bash sed find


    【解决方案1】:
    find /YourMainFolder -name '*.xml' -print | xargs -I "%ARG%" sh -c 'File="%ARG%";xmllint --noout "${File}" || echo "Error in ${File}" > errorlog.txt'
    

    将取决于您的错误,这里它基于返回代码 0

    使用缺失标签

    find /YourMainFolder -name '*.xml' -print | xargs -I "%ARG%" sh -c 'File="%ARG%";grep -q -E "<invoice>.*</invoice>" || echo "Error in ${File}" > errorlog.txt'
    

    【讨论】:

    • 在原始帖子中调整您的要求,我更改我的回复
    • 我尝试了第一个脚本,它给出了错误 xargs: {} No such file or directory。任何原因.. P.s 我不是专门寻找发票标签错误.. 但我正在寻找的错误是缺少结束标签时..
    • 我在我的系统上更改并使用%ARG% 而不是{} 并在-i 之后用双引号括起来,在我的linux 和aix 上工作正常
    • 我试过但仍然得到错误代码...但是命令 find /YourMainFolder -name '*.xml' -print | xargs -i 返回我的文件
    • 问题出在此处“如果指定了 replace-str,则此选项是 -Ireplace-str 的同义词,否则是 -I{} 的同义词。此选项已弃用;请改用 -I。”我试过了,它起作用了..我被弃用了
    猜你喜欢
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多