XMLノードの文字列の長さを確認するためのツールはありますか?

XMLノードの文字列の長さを確認するためのツールはありますか?

これを行うためのツールがあるかどうか疑問に思います。

XMLの例:

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

私が検索したいのは、左から-まで10未満のユニークで、右が-から右に9未満の場合です。

したがって、検索ではこのレコード/ノードに問題があるとマークされます。

<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の行番号を出力します。

関連情報