【发布时间】:2021-05-03 08:22:45
【问题描述】:
使用 Ruby 的 Nokogiri 库,我想按如下方式解析 XML 文档,从中提取一些元素(如“tsn”或“kingdom”):
<ns:searchByScientificNameResponse xmlns:ns="http://itis_service.itis.usgs.gov">
<ns:return xmlns:ax21="http://data.itis_service.itis.usgs.gov/xsd" xmlns:ax23="http://metadata.itis_service.itis.usgs.gov/xsd" xmlns:ax26="http://itis_service.itis.usgs.gov/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:SvcScientificNameList">
<ax21:scientificNames xsi:type="ax21:SvcScientificName">
<ax21:tsn>26339</ax21:tsn>
<ax21:author>L.</ax21:author>
<ax21:combinedName>Vicia faba</ax21:combinedName>
<ax21:kingdom>Plantae</ax21:kingdom>
<ax21:unitInd1 xsi:nil="true" />
<ax21:unitInd2 xsi:nil="true" />
<ax21:unitInd3 xsi:nil="true" />
<ax21:unitInd4 xsi:nil="true" />
<ax21:unitName1>Vicia</ax21:unitName1>
<ax21:unitName2>faba</ax21:unitName2>
<ax21:unitName3 xsi:nil="true" />
<ax21:unitName4 xsi:nil="true" />
</ax21:scientificNames>
</ns:return>
</ns:searchByScientificNameResponse>
打开文档后用
doc = Nokogiri::XML(File.open("sample.xml"))
如果我使用
tsn = doc.at_xpath("//tsn")
puts tsn
我得到一个 nil 值,如果我使用
tsn = doc.at_xpath("//:tsn")
我得到一个错误:Nokogiri::XML::XPath::SyntaxError (ERROR: Invalid expression: //:tsn)
有人可以帮我吗?
【问题讨论】: