0

我正在尝试使用 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::Documentputs自己的名字:

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)中获取名称 - 特别是相应作者(或作者)的名称,由correspXML 指示:

<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 指导。

4

0 回答 0