加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用HXT unpickler忽略XML属性

发布时间:2020-12-16 23:18:08 所属栏目:百科 来源:网络整理
导读:我正在编写一个小应用程序,旨在从多个站点中提取 XML,然后以我想要的方式处理数据.我之前用不同的语言制作了这样的应用程序,我正在为Haskell实践编写这个应用程序. 无论如何,到了这一点.在百万和一个不同的XML解析器环顾网络后,我决定选择HXT,因为谁不喜欢箭
我正在编写一个小应用程序,旨在从多个站点中提取 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

我知道我没有处理所有属性.我不想要所有的属性.有没有办法忽略这些?我想我可以处理所有属性,将它们放在一个新的数据类型中,然后从中提取属性以获取我真正想要的数据.我想避免这个小小的黑客,因此我在这里,要求正确的方式?.

我使用错误的工具来完成工作吗?解开第三方数据是不安全的(就像在Python中一样)?

我环顾网络寻找解决方案,但Text.XML.HXT.Arrow.XmlState.SystemConfig似乎没有我需要禁用此行为.

解决方法

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

Am I using the wrong tool for the job?

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

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的pickler做我想做的事情.它并不简洁,但它让我忽略了我不关心的数据.你可能也可以使用HXT的非泡菜部分,如果你喜欢箭头(我还在我的脑袋周围;)).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读