Я отправляю ответ на мыло, с которым я работаю внизу.
мне нужно, чтобы захватить атрибут BodyType="HTML"
из <t:Body BodyType="HTML">
Как разобрать атрибут из ответа савона
Doing response.body
превращает все вещи в хэш, и нет никаких признаков BodyType="HTML"
в этом.
Выполнение response.doc.css("t|Body")
создает ошибку: Undefined namespace prefix: //t:Body (Nokogiri::XML::XPath::SyntaxError)
, потому что я не вижу этого объявления пространства имен в XML.
Выполнение response.doc.css("Body")
return blank.
Что можно сделать, чтобы получить значение BodyType
?
Поскольку нет никакого смысла в размещении код, который делает запрос на безопасное/личное мыло, я отправляю некоторый базовый код, который читает в XML из плоского файла:
require 'savon'
require 'active_support/core_ext/hash/conversions'
require 'nokogiri'
@doc = Nokogiri::XML(File.open("tmp.xml"))
puts @doc.css("t|Body")
И вот XML:
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ServerVersionInfo xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" MajorVersion="15" MinorVersion="1" MajorBuildNumber="629" MinorBuildNumber="8" Version="V2016_07_13"/>
</s:Header>
<s:Body>
<m:GetItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<m:ResponseMessages>
<m:GetItemResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:Items>
<t:Message>
<t:ItemId Id="AAMkADE2NjQyMjVlLWNhY2UtNDNiMS04MzgxLWZiNzEyNzA0NDgwNQBGAAAAAACLt5QBAQ/GRYv+vEXkY5vLBwA6ksGFFTICTbjFW6e9FfRGAAAAAAEMAAA6ksGFFTICTbjFW6e9FfRGAAAu8FruAAA=" ChangeKey="CQAAABYAAAA6ksGFFTICTbjFW6e9FfRGAAAu9iR3"/>
<t:ParentFolderId Id="AAMkADE2NjQyMjVlLWNhY2UtNDNiMS04MzgxLWZiNzEyNzA0NDgwNQAuAAAAAACLt5QBAQ/GRYv+vEXkY5vLAQA6ksGFFTICTbjFW6e9FfRGAAAAAAEMAAA=" ChangeKey="AQAAAA=="/>
<t:ItemClass>IPM.Note</t:ItemClass>
<t:Subject>From test</t:Subject>
<t:Sensitivity>Normal</t:Sensitivity>
<t:Body BodyType="HTML">Hello world</t:Body>
</t:Message>
</m:Items>
</m:GetItemResponseMessage>
</m:ResponseMessages>
</m:GetItemResponse>
</s:Body>
</s:Envelope>
Когда вы спрашиваете о коде, пожалуйста, уменьшите свой ввод до абсолютного минимума, необходимого для демонстрации проблемы. Все остальное тратит наше время, заставляя нас это делать и потенциально смущает кого-либо другого, ищущего аналогичное решение. Пожалуйста, прочитайте «[mcve]» и [Сколько усилий ожидается от пользователей Stack Overflow?] (Http://meta.stackoverflow.com/a/261593/128421). –