Perl XML::Twig 输出作为哈希引用
如何使用 XML::Twig
获取 XML 文档的输出作为 hashref,类似于我们通过 XML::Simple
的 XMLout()< /代码>?
How can I get the output of an XML document as hashref using XML::Twig
similar to what we get through XML::Simple
's XMLout()
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
发布答案,因为实际答案在评论中:
OP问题的解决方案是使用 XML::Twig 的函数
simplify
。这会将解析后的树枝数据结构转换为哈希值。它故意与XML::Simple
类似 - 但这可能是一个坏主意,因为首先使用XML::Simple
是一个坏主意。您实际上“丢失了数据”,因为散列不支持重复键(而 XML 支持),并且 XML 不支持数组,而散列则支持。
对于简单的数据结构来说,这并不重要。但使用
XML::Twig
您通常根本不需要这样做。例如,使用children
或twig_handler
进行迭代。Posting answer because actual answer is in comments:
Solution to the OP's problem was to use XML::Twig's function
simplify
. This turns the parsed twig datastructure into a hash. Deliberately it's similar toXML::Simple
- but that's probably a bad idea for all the reasons that usingXML::Simple
is in the first place.You effectively 'lose data' because hashes don't support duplicate keys (where XML does) and XML doesn't support arrays, where hashes will.
For straightforward data structures, this doesn't matter much. But with
XML::Twig
you often simply don't need to. Iterating withchildren
or atwig_handler
for example.