SAPфорум.RU https://sapboard.ru/forum/ |
|
ЦБРФ: пустое пространство имен под xsd:any https://sapboard.ru/forum/viewtopic.php?f=70&t=94201 |
Страница 1 из 1 |
Автор: | Андрей Петин [ Пн, дек 19 2016, 15:30 ] |
Заголовок сообщения: | ЦБРФ: пустое пространство имен под xsd:any |
Добрый день. Использую один из сервисов Центробанка РФ - DragMetDynamicXML. WSDL всех сервисов здесь: http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?wsdl В ответе указан элемент DragMetDynamicXMLResult, содержимое которого не раскрывается в WSDL, т.е. внутри лежит просто any. Code: <s:element minOccurs="0" maxOccurs="1" name="DragMetDynamicXMLResult"> <s:complexType mixed="true"> <s:sequence> <s:any /> </s:sequence> </s:complexType> </s:element> Мне известно, какая структура там возвращается по факту. Я хотел бы добавить эти описание этой структуры в WSDL, чтоб далее использовать графический мэппинг для разбора ответа. Однако элементы, лежащие под DragMetDynamicXMLResult, относятся к пустому пространству имён, т.е. "". В WSDL везде используется непустое пространство имён. Ответ в целом выглядит так: Code: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <DragMetDynamicXMLResponse xmlns="http://web.cbr.ru/"> <DragMetDynamicXMLResult> <DragMetall xmlns=""> <DrgMet> <DateMet>2016-12-15T00:00:00+03:00</DateMet> <CodMet>1</CodMet> <price>2269.6800</price> </DrgMet> <DrgMet> <DateMet>2016-12-15T00:00:00+03:00</DateMet> <CodMet>2</CodMet> <price>33.2500</price> </DrgMet> <DrgMet> <DateMet>2016-12-15T00:00:00+03:00</DateMet> <CodMet>3</CodMet> <price>1831.8500</price> </DrgMet> <DrgMet> <DateMet>2016-12-15T00:00:00+03:00</DateMet> <CodMet>4</CodMet> <price>1427.1600</price> </DrgMet> </DragMetall> </DragMetDynamicXMLResult> </DragMetDynamicXMLResponse> </soap:Body> </soap:Envelope> Подскажите, как расширить описание структуры в WSDL-файле, чтоб пришедшие поля с xmlns="" корректно воспринимались и обнаруживались мэппингом PI? |
Автор: | Делетант [ Ср, мар 15 2017, 08:55 ] |
Заголовок сообщения: | Re: ЦБРФ: пустое пространство имен под xsd:any |
Аналогичная проблема, только с другим методом. Может кто подскажет? |
Автор: | chizz [ Чт, мар 16 2017, 15:43 ] |
Заголовок сообщения: | Re: ЦБРФ: пустое пространство имен под xsd:any |
Используйте XSLT, который удаляет namespace из сообщения перед Message Mapping http://sap-pi7.blogspot.ru/2011/03/gene ... paces.html |
Автор: | Андрей Петин [ Вт, мар 21 2017, 14:11 ] |
Заголовок сообщения: | Re: ЦБРФ: пустое пространство имен под xsd:any |
Да, я применил XSLT. Просто было интересно, можно ли без этого. На всякий случай прикладываю XSLT: Code: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="http://web.cbr.ru/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://yyyyyyyy.ru/A/CBRF/BPM/PreciousMetals">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <ns1:PreciousMetalsSiteResponse> <xsl:for-each select="ns0:DragMetDynamicXMLResponse/ns0:DragMetDynamicXMLResult/DragMetall/DrgMet"> <row> <DateMet> <xsl:value-of select="DateMet"/> </DateMet> <CodMet> <xsl:value-of select="CodMet"/> </CodMet> <price> <xsl:value-of select="price"/> </price> </row> </xsl:for-each> </ns1:PreciousMetalsSiteResponse> </xsl:template> </xsl:stylesheet> |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |