gpt4 book ai didi

xml - 使用 HXT unpickler 忽略 XML 属性

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:18 27 4
gpt4 key购买 nike

我正在编写一个小型应用程序,旨在从多个站点抓取 XML,然后以我希望的方式处理数据。我以前做过这样的应用程序,但使用的是不同的语言,我正在为 Haskell 练习编写这个应用程序。

总而言之,切入正题。在网上浏览了数百万种不同的 XML 解析器之后,我决定使用 HXT,因为谁不喜欢箭头。关注页面http://www.haskell.org/haskellwiki/HXT/Conversion_of_Haskell_data_from/to_XML我已经找到了一些似乎可以读取我的 XML 文件并将其放入我定义的 Haskell 数据类型中的东西。我正在使用 XmlPickler 的实例从文件中读取数据以实现此目的。我找到了一些可行的方法,除了这个错误:

fatal error: document unpickling failed
xpCheckEmptyAttributes: unprocessed XML attribute(s) detected

我知道我没有处理所有属性。我不想要所有的属性。有没有办法忽略这些?我想象我可以处理所有属性,将它们放入新的数据类型中,然后从中提取属性以获得我真正想要的数据。不过,我想避免这种小技巧,因此我来到这里,请求 The Proper Way™。

我是否使用了错误的工具来完成这项工作? unpickling 第三方数据是否不安全(就像在 Python 中一样)?

我在网上四处寻找解决方案,但 Text.XML.HXT.Arrow.XmlState.SystemConfig 似乎没有我需要的东西来禁用此行为。

最佳答案

前几天我遇到了这个问题,并得出以下结论:

Am I using the wrong tool for the job?

是的。 HXT 的 pickle 功能旨在轻松序列化和反序列化数据,但没有太大的灵 active 。从链接页面:

They are intended to read machine generated XML, ideally generated by the same pickler.

至于:

Is unpickling 3rd party data unsafe (like it is in Python)?

HXT 不行,不行。 python 中的 pickling 是不安全的,因为它(松散地)等同于对任意内容调用 eval()。 HXT只是一个XML解析器,没有调用任意代码。

就我个人而言,我已经转向使用 xml 包 (Text.XML.Light) 手动处理 XML,而不是试图让 HXT 的 picklers 做我想做的事。它不是那么简洁,但它让我忽略了我不关心的数据。不过,如果您喜欢箭头,您大概也可以使用 HXT 的非 pickle 部分(我仍在研究它们 ;))。

关于xml - 使用 HXT unpickler 忽略 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12080512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com