有没有什么工具可以让我检查 XML 节点的字符串长度

有没有什么工具可以让我检查 XML 节点的字符串长度

我想知道是否有任何工具可以做到这一点:

XML 示例:

<node1>
 <Data>
 <Unique>123456789-1234567891</Unique> 
 </Data>
</node1>

我希望搜索的是 Unique 小于 10 left to - 并且如果 Right 小于 9 from - to right。

因此搜索会将这个记录/节点标记为有问题

<Unique>6789-1234567891</Unique>

我试图使用 Grep 来做到这一点,但是我已经开始在 Bash 中使用各种 XML 工具,所以我想我可能会首先在特定工具上提出这个问题。

xmllint 是我正在使用的一个。

答案1

(很抱歉给你发垃圾邮件)在 perl 中使用 XML 解析器

(如果需要的话sudo cpan XML::DT:)

#!/usr/bin/perl
use XML::DT;
my $file = shift;

# $c - contents after child processing

print dt(
   $file,
   'Unique' => sub{$c =~ s/^(\d{1,9}-\d+|\d+-\d{1,8})$/FIXME:$1/; toxml },
)

在这种情况下,您会得到一个带有“FIXME”注释的 XML

答案2

grep -nP "<Unique>(\d{1,9}-\d+|\d+-\d{1,8})</Unique>" ex.xml

  • -n输出错误Uniques的行号

相关内容