Я пытаюсь сравнить XML-ответ веб-службы со значениями из базы данных.
У меня есть XML-ответ SOAP WebService, сохраненный в переменной как RestClient::Response
, как указано ниже:
Значения каждого узла и узла внутри каждого тега элемента необходимо сравнивать с результатом запроса базы данных, т.е. после выполнения запроса базы данных первая строка результата запроса равна ['Reason 1', 'T', 'OPEN', '2019-05-20', '2019-06-04', 'T']
.Точно так же другие строки также обозначают значения, которые необходимо сравнивать с любыми другими значениями дочерних узлов внутри тега элемента.Используя ruby, я сохранил результат запроса db в виде массива массивов, где каждый внутренний массив является строкой.
Как сохранить все значения дочерних узлов внутри каждого тега элемента в виде массива массивов, чтобы я могсравнить их со значениями в БД?Например:
[["Reason 1", "T", "OPEN", "2019-05-20", "2019-06-04", "T"], ["Reason 3", "T", "OPEN", "2019-05-20", "2019-05-28", "T"]]
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<a:Details xmlns:a="http://service.test.ws.project/">
<items>
<item>
<reason>Reason 2</reason>
<DisplayInWeb>F</DisplayInWeb>
<status>OPEN</status>
<availableDate>2019-05-20</availableDate>
<expiryDate>2019-05-21</expiryDate>
<sold>T</sold>
</item>
<item>
<reason>Reason 1</reason>
<DisplayInWeb>T</DisplayInWeb>
<status>OPEN</status>
<availableDate>2019-05-20</availableDate>
<expiryDate>2019-06-04</expiryDate>
<sold>T</sold>
</item>
<item>
<reason>Reason 3</reason>
<DisplayInWeb>T</DisplayInWeb>
<status>OPEN</status>
<availableDate>2019-05-20</availableDate>
<expiryDate>2019-05-28</expiryDate>
<sold>F</sold>
</item>
<Count>3</Count>
</items>
</a:Details>
</soap:Body>
</soap:Envelope>
def get_response_node_values_as_array(parent_tag_name)
response_xml = Nokogiri::XML $response
puts response_xml
child_arr = Array.new
response_xml.xpath("//#{parent_tag_name}").each { |node|
searched_field_arr << node.value
}
return child_arr
end
Я передавал имя родительского тега, который здесь является item в качестве аргумента метода.Ожидается, что он вернет массив массивов со значениями дочерних узлов, доступных под каждым родителем.