【发布时间】:2016-11-18 05:07:49
【问题描述】:
我正在尝试使用 nokogiri 解析简单的 XML 数据。 这是我的 XML:
POST /.... HTTP/1.1
Host: ....
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://...."
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="...." xmlns:xsd="...." xmlns:soap="....">
<soap:Body>
<WS_QueryOnSec xmlns="......">
<type>string</type>
<ID>string</ID>
</WS_QueryOnSec>
</soap:Body>
</soap:Envelope>
这是我的简单要求:
require "nokogiri"
@doc = Nokogiri::XML(request.body.read)
@something = @doc.at('type').inner_html
但是 Nokogiri 找不到类型或 ID 节点。 当我将数据更改为这个时,一切正常:
<soap:Body>
<type>string</type>
<ID>string</ID>
</soap:Body>
似乎问题在于上面的原始文本数据和带有xmlns或其他属性的点头! 你有什么建议来解决这个问题?
【问题讨论】:
-
第一个“XML”不是 XML。它是包含 XML 的文本。将标题信息删除到空行。我认为阅读 XML 规范或阅读一些有关创建 XML 的教程会有所帮助。
-
@the Tin Man 但是这些标签中包含的属性呢?当我删除文本时,它仍然是一样的!直到我删除包含属性的整个标签!谢谢。
标签: ruby-on-rails ruby xml xml-parsing nokogiri