如何使用perl在xml文件中搜索特定字符串?
Bailey在xml文件中,但billybob不是前两个主要问题: 您正试图打开一个文件,其名称以.xml>结尾 应该是如何使用perl在xml文件中搜索特定字符串?,xml,perl,Xml,Perl,Bailey在xml文件中,但billybob不是前两个主要问题: 您正试图打开一个文件,其名称以.xml>结尾 应该是 open FILE, "<$inputFile>"; open FILE, "<$inputFile"; for (@lines) { 或者如果你采纳了我建议的改变 while (<FILE>) { 前两个主要问题: 您正试图打开一个文件,其名称以.xml>结尾 应该是 open FILE, "<$inputFile>";
open FILE, "<$inputFile>";
open FILE, "<$inputFile";
for (@lines) {
或者如果你采纳了我建议的改变
while (<FILE>) {
前两个主要问题: 您正试图打开一个文件,其名称以.xml>结尾 应该是
open FILE, "<$inputFile>";
open FILE, "<$inputFile";
for (@lines) {
或者如果你采纳了我建议的改变
while (<FILE>) {
我认为你采取了错误的方法。使用基于行和正则表达式的解析无法很好地解析XML——有多种方法可以创建语义相同、与相同正则表达式不匹配的XML 我也不得不稍微调整一下您的XML,因为它是无效的。我假设,因为您提到了“示例”,所以您的XML是有效的。仅供参考-提供有效的示例XML非常有用-这意味着所有标记都是打开/关闭的 所以我用这个:
while (<$FILE>) {
注意-仅在XML文本中“查找”关键字,而不是在任何属性中。这通常比盲目匹配XML结构/属性/内容更可取 我认为你采取了错误的方法。使用基于行和正则表达式的解析无法很好地解析XML——有多种方法可以创建语义相同、与相同正则表达式不匹配的XML 我也不得不稍微调整一下您的XML,因为它是无效的。我假设,因为您提到了“示例”,所以您的XML是有效的。仅供参考-提供有效的示例XML非常有用-这意味着所有标记都是打开/关闭的 所以我用这个:
while (<$FILE>) {
注意-仅在XML文本中“查找”关键字,而不是在任何属性中。这通常比盲目匹配XML结构/属性/内容更可取 下面是xml文件BaileyWhat is verb中的一个示例?billybob和Bailey的弦乐从哪里来?对于您的示例,您的命令行是什么样子的?下面是xml文件BaileyWhat is verb中的一个示例?billybob和Bailey的弦乐从哪里来?您的示例的命令行是什么样子的?
<root
><a:r
><a:p
><a:t
>Bailey</a:t></a:p></a:r><a:p
><a:pPr
lvl="1"
><a:lnSpc
><a:spcPct
val="90000"
/></a:lnSpc></a:pPr></a:p></root>
<root><a:r><a:p><a:t>Bailey</a:t></a:p></a:r><a:p><a:pPr lvl="1"><a:lnSpc><a:spcPct val="90000"/></a:lnSpc></a:pPr></a:p></root>
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $search = 'Bailey';
my $found;
XML::Twig->new(
twig_handlers => {
'_all_' => sub { $found++ if $_->text =~ m/$search/ }
}
)->parsefile($inputFile);
if ($found) {
print "Found $search\n";
}
else {
print "Didn't find $search\n";
}