- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
总结:我正在寻找一个快速的 XML 解析器(很可能是一些标准 SAX 解析器的包装器),它将生成与 XML::Simple 生成的数据结构 100% 相同的每记录数据结构。 .
详细信息:
我们有一个庞大的代码基础设施,它依赖于一个接一个地处理记录,并且期望记录是一种由 XML::Simple 生成的格式的数据结构,因为自侏罗纪早期以来它一直使用 XML::Simple。
一个简单的 XML 示例是:
<root>
<rec><f1>v1</f1><f2>v2</f2></rec>
<rec><f1>v1b</f1><f2>v2b</f2></rec>
<rec><f1>v1c</f1><f2>v2c</f2></rec>
</root>
示例粗略代码是:
sub process_record { my ($obj, $record_hash) = @_; # do_stuff }
my $records = XML::Simple->XMLin(@args)->{root};
foreach my $record (@$records) { $obj->process_record($record) };
众所周知,XML::Simple 非常简单。更重要的是,它非常慢并且占用大量内存——因为它是一个 DOM 解析器并且需要在内存中构建/存储 100% 的数据。因此,它不是逐条解析由大量小记录组成的 XML 文件的最佳工具。
然而,重写整个代码(其中包含大量类似“process_record”的方法)以使用标准 SAX 解析器似乎是一项不值得资源的艰巨任务,即使以使用 XML 为代价: :简单。
我正在寻找一个现有的模块,它可能基于 SAX 解析器(或任何快速且内存占用小的东西),可用于根据上图所示的 XML 可以传递给 $obj->process_record($record)
并且与 XML::Simple 的 hashrefs 100% 相同。
我不太关心新模块的接口(interface)是什么;例如,我是否需要调用 next_record()
或为其提供接受记录的回调代码引用。
最佳答案
XML::Twig
有一个 simplify 方法,你可以调用一个 XML 元素,根据文档说:
Return a data structure suspiciously similar to XML::Simple's
这是一个例子:
use XML::Twig;
use Data::Dumper;
my $twig = XML::Twig->new(
twig_handlers => {
rec => \&rec,
}
)->parsefile( 'data.xml' );
sub rec {
my ($twig, $rec) = @_;
my $data = $rec->simplify;
say Dumper $data;
$rec->purge;
}
注意。 $rec->purge 立即从内存中清除记录。
针对您的 XML 示例运行此命令会产生以下结果:
$VAR1 = {
'f1' => 'v1',
'f2' => 'v2'
};
$VAR1 = {
'f1' => 'v1b',
'f2' => 'v2b'
};
$VAR1 = {
'f1' => 'v1c',
'f2' => 'v2c'
};
我希望它可疑像 XML::Simple 的结果 :)
/I3az/
关于xml - 如何使用 Perl XML SAX 解析器创建 XML::Simple 数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912462/
我想创建一个对象,比方说一个饼图。 class Pie def initialize(name, flavor) @name = name @flavor = flavor e
我正在寻找类似于 Log property in Linq DataContext 的功能. 最佳答案 所有执行的 SQL 都写入 Trace,因此您可以使用 TraceListener 访问。 关于
使用 django-simple-history ,如何从我的模型中获取最后更改的对象? 我尝试了 MyModel.history.most_recent(),它需要一个模型实例,因此可能会返回所选实
我定期使用 Eclipse 调试器,这一直困扰着我关于 IDE 的问题。步进过滤是一个非常宝贵的工具,这样我就不会进入没有源代码或者我根本不感兴趣的类。但是,Eclipse 在大多数情况下都没有正确处
我基于有向图构建一棵树。源数据是 SQL 表中的一系列父子关系。它肯定是一棵树(无论如何我都会验证)。我想要一组从根到每片叶子的简单路径。数据是会计“科目表”中的标题,路径类似于“根 -> Asset
我对如何在torii中使用ember-simple-auth有点困惑 我正在使用ember-cli-simple-auth和ember-cli-simple-auth-torii 我得到下面提到的错误
考虑以下用 simple-xml 注释注释的枚举: @Root(name="days") public enum DaysOfWeek { SUNDAY("blue", 30), MO
我有一个 json 文件,我正在 excel 中创建一些 vba 代码。我想用java读取这个json文件。为此,我编写了以下代码 try { Class.forName("org.j
我在尝试使用 google 的 simple-json 解析一个简单的 json 时遇到了一个奇怪的问题。 这是我的代码,它不起作用: String s = args[0].toString(); J
我正在尝试解析下面的 json 文件: {"units":[{"id":42, "title":"Hello World", "positi
我正在使用 simple-import-sort eslint 插件进行 react 。我想我的 .eslintrc.js是对的,但我无法使这个特定的插件工作。我在文件的第一行收到以下错误: 未找到规
我正在尝试解析子文件,但我不知道自己做错了什么(当然,我也不知道自己做对了什么)。 文件.json [{ "arrOne":{ "one":"a", "two":"b",
在我的Angel 16(独立的)应用程序中,我有一个简单的服务来测试LangChain和OpenAI。同样的代码在NodeJS应用程序中运行得非常好,然而,当从角度运行时,OpenAI返回的结果总是空
我正在尝试测试连接到数据库的 Web 应用程序 - 我的 Junit 代码不执行连接。 设置按照 https://github.com/h-thurow/Simple-JNDI InitialCont
我正在尝试制作一个小型应用程序,它可以通过 ISBN 在亚马逊上搜索一本书。我是 Amazon Web Service 的新手。 我正在关注以下链接: http://flyingpies.wordpr
我正在使用简单 XML 序列化 (simple-xml-2.6.6.jar) here将我的 XML 响应从 webservice 转换为 POJO 类。 XML 是:
Simple UI混合开发的必经之路~ Simple UI快速上手 在混合开发的模式下,如果想使用django admin,又嫌弃后台不符合你的审美?Simple UI给你想要的答案,我不是打广告的~
Simple JSON是Google开发的Java JSON解析框架,基于Apache协议。 下载的文件是:json_simple.jar 例子1:很方便的方式,使用JSONValue
我有一个 simple_form 表单设置,它会很好地显示内联错误。我遇到过一些用户看不到这些错误的问题,并要求在非常长的表格顶部进行清晰的枚举。我使用了 Rails 教程中的代码设置:
我正在使用简单的 XML 框架,只是重命名了一些 XML 布局,这些布局现在似乎不再起作用了。 这是我的 XML: 2 0 1
我是一名优秀的程序员,十分优秀!