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의 줄 번호를 출력합니다.

관련 정보