我正在尝试使用 ruby Ox 库从 XML 中获取信息,正如它的文档所说,它比 Nokogiri 和其他常用的要快得多。不幸的是,虽然由于 xpaths 的简单性,我可以使用 Nokogiri,但我不是 Ruby 方面的专家,无法弄清楚我在使用哈希和 Ox 文档时出错的地方,以及一些让我头脑清醒的示例代码真的很有帮助。
我几乎找不到在线教程的方式,它的文档非常简洁/最少,尽管如果我更熟悉 XML 解析,我不需要为我详细说明。
我不是要求任何人在这里为我工作,但我真的不知道在哪里可以找到信息/指导/示例代码,并且无法在我当前的程序中使用 Nokogiri。
使用 simplexml 我得到了一个可以puts
输出的 Hash:
xml_data = Net::HTTP.get_response(URI.parse(url)).body #grab XML
data = XmlSimple.xml_in(xml_data, { 'KeyAttr' => 'name'}) #parse XML to hash
使用 ox 我得到的是一个Ox::Document
它puts
自己的名字:
xml_data = Net::HTTP.get_response(URI.parse(url)).body #grab XML
data = Ox.parse(xml_data) #parse XML (to hash??)
似乎没有对这些库中的任何一个进行指导,并且文档假定了解这一切的含义,而没有与工作示例代码进行比较的链接。
我目前的主要学习资源是在 StackOverflow 上看到工作中的基础知识,但部分是由于短名称(Google/typos 与 OS X 混淆)我几乎找不到这些......它看起来很好设置做我想做的事,但我只能找到一个问题也突出显示薄文档但试图在此处编写(而不是读取)xml 。
我正在尝试从以下 XML 结构(示例 xml)中获取名称 - 特别是相应作者(或作者)的名称,由corresp
XML 指示:
<pmc-articleset>
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" article-type="research-article">
<front>
<article-meta>
<article-id pub-id-type="pmid">17060631</article-id>
<article-id pub-id-type="pmc">1637560</article-id>
<article-id pub-id-type="publisher-id">3908</article-id>
<article-id pub-id-type="doi">10.1073/pnas.0603850103</article-id>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Andricioaei</surname>
<given-names>Ioan</given-names>
</name>
<xref rid="aff1" ref-type="aff"/>
<xref ref-type="corresp" rid="cor1">*</xref>
</contrib>
即示例中的 Ioan Andricioaei。我认为正则表达式将是一种丑陋的方法,因为它已经被标记了......这是我正在做的更大努力/程序的一部分,并且非常感谢这里的一些 XML 指导。