Ruby 使用Ox解析xml的基础知识

Ruby 使用Ox解析xml的基础知识,ruby,xml,xml-parsing,Ruby,Xml,Xml Parsing,我正试图通过ruby Ox库从XML中获取信息,正如其文档所说,ruby Ox库比Nokogiri和其他常用的库快得多。不幸的是,虽然由于XPath的简单性,我可以使用Nokogiri,但我不是Ruby方面的专家,也不知道散列和Ox文档哪里出了问题,一些示例代码对我很有帮助 我几乎找不到在线教程,尽管如果我更熟悉XML解析,我不需要为我详细说明 我没有要求任何人在这里为我做我的工作,但我真的不知道在哪里可以找到信息/指导/示例代码,并且无法在我当前的程序中使用Nokogiri 使用simplex

我正试图通过ruby Ox库从XML中获取信息,正如其文档所说,ruby Ox库比Nokogiri和其他常用的库快得多。不幸的是,虽然由于XPath的简单性,我可以使用Nokogiri,但我不是Ruby方面的专家,也不知道散列和Ox文档哪里出了问题,一些示例代码对我很有帮助

我几乎找不到在线教程,尽管如果我更熟悉XML解析,我不需要为我详细说明

我没有要求任何人在这里为我做我的工作,但我真的不知道在哪里可以找到信息/指导/示例代码,并且无法在我当前的程序中使用Nokogiri

使用simplexml,我得到了一个散列,我可以
将它放出来:

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
,它只
把它自己的名字放出来:

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
表示:

<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>

17060631
1637560
3908
10.1073/pnas.0603850103
安德里西奥埃
伊昂
*

i、 e.示例中的Ioan和Ricioaei。我认为正则表达式将是一个丑陋的方式,因为它已经被标记。。。这是我正在进行的一项更大的工作/计划的一部分,非常感谢您在这里提供一些XML指导。

使用
Nokogiri
。。为此,由于Roo和Nokogiri之间不兼容(因为Roo需要google_drive,google drive v 0.3.0与Nokogiri或其他东西不兼容),我不能尝试
Hash.from_xml(xml_数据)
Hash.from_xml(xml_数据.to_xml)
或将
xml_数据
更改为
data
。我看得很肤浅,所以可能我误解了这一点。@zishe
Nomethoderror:undefined method'from_xml'代表Hash:Class
我担心(而
Nomethoderror:undefined method'from_xml'代表#
代表第二个选项)请根据