Perl XML :: Twig – 在属性中及其周围保留引号
发布时间:2020-12-16 06:13:22 所属栏目:大数据 来源:网络整理
导读:我有选择地修复一些元素和属性.不幸的是,我们的输入文件包含单引号和双引号属性值.此外,某些属性值包含引号(在值内). 使用XML :: Twig,我看不出如何保留属性值周围存在的任何引号. 这是示例代码: use strict;use XML::Twig;my $file=qq(file label1 attr='T
我有选择地修复一些元素和属性.不幸的是,我们的输入文件包含单引号和双引号属性值.此外,某些属性值包含引号(在值内).
使用XML :: Twig,我看不出如何保留属性值周围存在的任何引号. 这是示例代码: use strict; use XML::Twig; my $file=qq(<file> <label1 attr='This "works"!' /> <label2 attr="This 'works'!" /> </file> ); my $fixes=0; # count fixes my $twig = XML::Twig->new( twig_handlers => { '[@attr]' => sub {fix_att(@_,$fixes);} },# ... keep_atts_order => 1,keep_spaces => 1,keep_encoding => 1,); #$twig->set_quote('single'); $twig->parse($file); print $twig->sprint(); sub fix_att { my ($t,$elt,$fixes) =@_; # ... } 上面的代码返回label1的无效XML: <label1 attr="This "works"!" /> 如果我添加: $twig->set_quote('single'); 然后我们会看到label2的XML无效: <label2 attr='This 'works'!' /> 是否有保留现有报价的选项?或者有更好的方法来选择性地固定树枝? 解决方法
你有什么特别的理由使用keep_encoding吗?如果没有它,报价就会被正确编码.
keep_encoding用于保留文件的原始编码,但还有其他方法可以执行此操作.它主要用于5.8之前的时代,当时编码不像现在那样顺畅. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |