我是Haskell初学者。我有来自ProjectGutenberg的RDFXML,如下所示:ArchivescontainingtheRDFfilesfor*all*ourbookscanbedownloadedathttp://www.gutenberg.org/wiki/Gutenberg:Feeds#The_Complete_Project_Gutenberg_CatalogPoetry2017-03-16T05:01:13.61504712133application/rdf+xml1991-10-01ParadiseLostPR5071332011-03-02T06:33:5
我有一个包含大约4500个XML(HTML5)文件的目录,我想为它们的数据创建一个“list”(本质上是title和base/@href).为此,我一直在使用一个函数来收集所有相关文件路径,用readFile打开它们,将它们发送到基于tagsoup的解析器,然后输出/格式化结果列表。这适用于文件的子集,但最终会遇到openFile:resourceexhausted(Toomanyopenfiles)错误。阅读一些内容后,这并不奇怪:我正在使用mapMparseMetaDataFile文件,它会立即打开所有句柄。我想不通的是如何解决这个问题。我试过阅读一些关于Iteratee的文章;我
假设我想从这样的xml字符串中解析电话号码:str="""123NewYork,NY10019(212)212-0001"""parser=newXmlSlurper(neworg.ccil.cowan.tagsoup.Parser()).parseText(str)printlnparser.address.div.text()它不打印电话号码。如果我像这样将“div”元素更改为“foo”str="""123NewYork,NY10019(212)212-0001"""parser=newXmlSlurper(neworg.ccil.cowan.tagsoup.Parser()).p
我有两个XML文件需要解析为一条记录。第一个文档包含大部分记录的数据,但是有一个字段包含一个标识符,用于从第二个XML文件中获取数据,有点像文件1:value1valueN1文件2:refValue1refValue2我想做的是在解析第一个文档时,从关键元素中检索值,当我提取的值时,我立即获取的内容来自第二个文件。由于我是Arrows的新手,事实证明这对我来说是一个很大的挑战,要弄清楚如何去做。我能够很好地解析第一个XML文件,但我不知道如何传入第二个文档以供按需使用。 最佳答案 在phg的建议下,我尝试先将第二个XML文件解析为M
我有一个包含一些数据的XML文件。该文件包含列和数据本身的描述。我可以读取列名称,但无法读取数据,因为我不明白如何将此行名称赋予将返回数据的函数。XML文件:Somestudy11128/12/2010Somestudy11203/03/2011Somestudy11309/06/2011示例代码:{-#LANGUAGEArrows#-}importText.XML.HXT.CoreimportData.Tree.NTree.TypeDefsparseXML::String->IOStateArrowsbXmlTreeparseXMLfile=readDocument[withVali
我需要在Haskell中解析一个XML文件,所以我选择了HXT。到目前为止,我喜欢它,但我无法弄清楚如何做一件事。我正在解析的文件包含作为配置文件的信息。它的结构类似于SomeNameMoreInforowname1rowvalue1rowname2rowvalue2...这种标记格式让我感到畏缩,但这是我必须使用的格式。我在Haskell中对这些中的每一个都有如下记录dataClient=Client{name::String,info::String,table::Table}dataRow=Row{name::String,value::String}typeTable=[Row
我最近编写了以下Python函数,它将获取GooglePicasacontacts.xml文件并输出带有ID和名称的字典。defread_contacts_file(fn):importxml.etree.ElementTreex=xml.etree.ElementTree.ElementTree(file=fn)q=[(u.attrib["id"],u.attrib["name"])foruinx.iter("contact")]returndict(q)这个函数的作用是返回一个字典(哈希表,映射),其中ID是键,名称是值。文件本身具有以下形式:在Haskell中实现它的最简单方法是
因此,我使用了几个HaskellXML库,包括hexpat和xml-enumerator。在阅读了RealWorldHaskell(http://book.realworldhaskell.org/read/io.html)中的IO章节后,我的印象是,如果我运行以下代码,它将在我执行它时被垃圾收集。但是,当我在一个大文件上运行它时,内存使用率在运行时不断攀升。runghcparse.hsbigfile.xml我做错了什么?我的假设错了吗?映射/过滤器是否强制它评估所有内容?importqualifiedData.ByteString.LazyasBSLimportqualifiedDa
我已经在使用HXT来转换XML。现在我想根据XSD文件验证输入和输出。HXT似乎只包括RELAXNG和DTDvalidators.我真的不关心使用其他东西来验证。 最佳答案 我能想到的最接近的是HaXml和一些苦力:https://hackage.haskell.org/package/HaXml-1.25.3特别是,您拥有解析XSD和验证DTD的工具。但是,我没有“开箱即用”的方法来验证XSD——可以将您想要的信息粉碎成它们的DTD格式,或者您可以针对已解析的XSD复制它们的验证逻辑。至少这是一个开始...
我想知道在Haskell中处理UnicodeXML的官方解决方案是什么。我注意到HXT对文本使用简单的String表示(Unicode字符列表!!!)。http://hackage.haskell.org/packages/archive/hxt/9.3.1.0/doc/html/Text-XML-HXT-DOM-TypeDefs.html#t:XNodeConstructorsXTextStringordinarytext(leaf)XBlobBlobtextrepresentedmorespaceefficientasbytestring(leaf)解析时如何在这两种表示之间进行选