Ruby 使用Ox解析xml的基础知识
我正试图通过ruby Ox库从XML中获取信息,正如其文档所说,ruby Ox库比Nokogiri和其他常用的库快得多。不幸的是,虽然由于XPath的简单性,我可以使用Nokogiri,但我不是Ruby方面的专家,也不知道散列和Ox文档哪里出了问题,一些示例代码对我很有帮助 我几乎找不到在线教程,尽管如果我更熟悉XML解析,我不需要为我详细说明 我没有要求任何人在这里为我做我的工作,但我真的不知道在哪里可以找到信息/指导/示例代码,并且无法在我当前的程序中使用Nokogiri 使用simplexml,我得到了一个散列,我可以Ruby 使用Ox解析xml的基础知识,ruby,xml,xml-parsing,Ruby,Xml,Xml Parsing,我正试图通过ruby Ox库从XML中获取信息,正如其文档所说,ruby Ox库比Nokogiri和其他常用的库快得多。不幸的是,虽然由于XPath的简单性,我可以使用Nokogiri,但我不是Ruby方面的专家,也不知道散列和Ox文档哪里出了问题,一些示例代码对我很有帮助 我几乎找不到在线教程,尽管如果我更熟悉XML解析,我不需要为我详细说明 我没有要求任何人在这里为我做我的工作,但我真的不知道在哪里可以找到信息/指导/示例代码,并且无法在我当前的程序中使用Nokogiri 使用simplex
将它放出来:
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
。我看得很肤浅,所以可能我误解了这一点。@zisheNomethoderror:undefined method'from_xml'代表Hash:Class
我担心(而Nomethoderror:undefined method'from_xml'代表#
代表第二个选项)请根据