我想在perl中製作一個簡單的腳本,它將在xml文件中查找明顯的錯誤。我認爲完成這個任務的最好方法是創建一個正則表達式並讓perl使用它來返回xml的壞行。這裏是我的代碼使用正則表達式來使用Perl搜索XML文件
#!/usr/bin/perl
$file = '/path/to/my/xml/file.txt';
open(txt, $file);
while($line = <txt>) {
print "$line" if $line =~ m/<[a-zA-Z]*>[$a-zA-Z0-9]*>[a-zA-Z0-9]*</;
}
close(txt);
我使用的作品完美地在記事本++的正則表達式,但是當我把它在Perl它不想工作。我試圖找到一行看起來像這樣的xml
<tag>badline></tag>
如果我分開我的正則表達式行返回。
m/<[a-zA-Z]*> -works
[$a-zA-Z0-9]*> -works
[a-zA-Z0-9]*</; -works
但是當我將它們組合起來就像我在代碼中顯示,它不
任何幫助是極大的讚賞,感謝。
這是處理XML的一種非常糟糕的方式。爲什麼不使用CPAN的許多XML解析器來檢查錯誤? – friedo
歡迎來到SO。這個問題似乎每天都會出現一次,所以在發佈之前進行搜索將是合適的。簡單的答案是,正則表達式正是用於處理XML的錯誤工具。看到[這個答案](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags#1732454)使用一個真正的XML解析器,你可以找到CPAN 。 –
你意識到' badline> '實際上是格式良好的XML嗎? –
mirod