- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可能会问一个基本问题,但它让我很烦。
以下是我的代码片段
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $twig = new XML::Twig( twig_handlers => { TRADE => \&TRADE } );
$twig->parsefile('1510.xml');
$twig->set_pretty_print('indented');
$twig->print_to_file('out.xml');
sub TRADE {
my ( $twig, $TRADE ) = @_;
#added delete in place of cut
$TRADE->cut($TRADE) unless
$TRADE->att('origin') eq "COMPUTER";
}
这按预期工作。它为我提供了所有“来源”等于“计算机”的交易。
但我需要处理跨越 1 GB 的 XML 文件。在那种情况下,它会消耗大量内存,因此会出现“段错误”。
因此,为了解决这个问题,我正在尝试实现 XML::Twig 的“清除”概念
因此我将代码修改为:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my $twig = new XML::Twig( twig_handlers => { TRADE => \&TRADE } );
$twig->parsefile('1510.xml');
$twig->set_pretty_print('indented');
$twig->print_to_file('out.xml');
sub TRADE {
my ( $twig, $TRADE ) = @_;
#added delete in place of cut
$TRADE->cut($TRADE) unless
$TRADE->att('origin') eq "COMPUTER";
$twig->purge;
}
这是给我空文件。我正在尝试刷新那些为了有效使用内存而使用的 Twig 。
我不知道为什么它给我空白的输出文件。
示例 XML:
<TRADEEXT>
<TRADE origin = 'COMPUTER'/>
<TRADE origin = 'COMP'/>
<TRADE origin = 'COMPP'/>
</TRADEEXT>
输出文件:
<TRADEEXT>
<TRADE origin = 'COMPUTER'/>
</TRADEEXT>
最佳答案
你可能应该使用flush
(到一个filehanlde)而不是purge
:flush
输出到目前为止已经解析的 Twig 并释放内存,而 purge
仅释放内存。
也就是说,如果您只想删除没有适当属性的 TRADE 元素,您可以这样做:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
open( my $out, '>:utf8', "out.xml") or die "cannot create output file out.xml: $!";
my $twig = XML::Twig->new( pretty_print => 'indented',
twig_roots => { 'TRADE[@origin != "COMPUTER"]'
=> sub { $_->delete; }
},
twig_print_outside_roots => $out,
)
->parsefile('1510.xml');
这会在文件中留下一些额外的空行,您可以稍后删除它们。 twig_roots
处理程序会为您需要删除的所有元素触发并删除它们,而 twig_print_outside_roots
选项会导致所有其他元素按原样打印。
关于perl - $twig->purge 给出空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413001/
我尝试将 CSS-PURGE 作为系统即服务来使用,以通知用户是否可以在他或她的 CSS 中做得更好。因此,我希望 CSS-PURGE 给我一份报告,该报告应该适用于以下配置: { "option
我正在 Digital Ocean Ubuntu VM 上运行一个独立的 varnish 实例,它基本上工作正常。该设置用于加载位于其他任何地方的旧 wordpress 服务器。这很有效,但我很难清除
对于不熟悉Purge命令的人来说,它会清除不活动的内存。我猜它包含在开发工具中。我认为 iFreeMem、iMemoryCleaner、iCleanMemory 等其他应用程序也是这样做的。但是,如果
我可能会问一个基本问题,但它让我很烦。 以下是我的代码片段 #!/usr/bin/perl use strict; use warnings; use XML::Twig; my $twig = ne
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我试图在 except: block 中引发异常,但解释器试图提供帮助并“强制”打印堆栈跟踪。有可能避免这种情况吗? 一些背景信息:我正在玩弄 urwid,一个 TUI library对于 pytho
不只是命令,还有实际行为... hg purge 将删除所有未跟踪的文件。 我以为是 git clean,但不是... $ git clean fatal: clean.requireForce de
我正在 maven 项目目录中运行以下命令: mvn dependency:purge-local-repository 什么是预期行为? 它会删除(并重新下载?)我本地存储库中已存在的所有依赖项 那
我正在制作一个免费的 Mac 应用程序,它只是可以在终端中运行的“purge”命令的包装器。我厌倦了 Mac App Store 中充斥的盗版行为,我只想帮助人们。我已经完成了 GUI,但我只是不知道
我正在尝试在 MarkLogic 中设置带有日志归档的增量备份,但我很难在管理界面中找到“purge-journal-archiving”设置。为了进行此设置,“purge-journal-archi
有什么方法可以配置 Spring Security OAuth2 以便它自动清除 TokenStore? 我想时不时地删除过期的 token 。我看过 InMemoryTokenStore 代码,它时
我有一个非常简单的元素,它使用了几种扩展到主题的颜色。当我在 tailwind.config.js 文件中启用清除时,所有内容都会按其应有的方式清除,但我所有的暗类也会被清除。 有人有同样的问题吗?我
我正在尝试在我的存储库中执行 hg 清除,但我需要从该清除中排除一些目录(例如 node_modules 和其他内容)。 基本上,我想保留(而不是删除)这些目录,以避免每次都重新下载它们。 这是关于我
有什么方法可以配置 Spring Security OAuth2 以便它自动清除 TokenStore? 我想时不时地删除过期的 token 。我看过 InMemoryTokenStore 代码,它时
我有一个非常简单的元素,它使用了几种扩展到主题的颜色。当我在 tailwind.config.js 文件中启用清除时,所有内容都会按其应有的方式清除,但我所有的暗类也会被清除。 有人有同样的问题吗?我
你知道如何做这样的事情吗?我的意思是人员列表和已删除消息的数量: 4 messages were removed. Qbiczeg#9999: 3 Bot#2275: 1 @bot.comma
在 vcl_hash 中,我有 backend default { .host = "127.0.0.1"; .port = "8080"; } acl purge {
在MacOsx中,我们可以通过Terminal清理内存,像这个页面显示http://www.electrictoolbox.com/purge-free-inactive-memory-mac-osx
我正在使用Vagrant模拟分布式系统项目的网络。我使用此文件 provision.sh 来配置集群中的每台计算机: sudo apt-get update sudo apt-get install
Linux新手,我认为apt-get purge通常用于完全删除pkg,但今天它几乎使我的整个系统崩溃。我想删除以前安装的 python 3.4 发行版,但我不确定它属于哪个 pkg,所以我使用 fi
我是一名优秀的程序员,十分优秀!