Рубиновый камень Savon добавляет ins0 к тегам - PullRequest
5 голосов
/ 20 октября 2011

Используя gem savon, я получаю следующий XML-запрос:

<?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:wsdl="URL" 
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:ins0="SOME URL">
        <soap:Body>
            <ins0:Test xmlns="SOME URL">
            </ins0:Test>
        </soap:Body>
    </soap:Envelope>

Но вместо этого он должен быть таким:

<?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:wsdl="URL" 
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <Test xmlns="SOME URL">
            </Test>
        </soap:Body>
    </soap:Envelope>

Уведомление ins0 удалено.

Есть предложения?

1 Ответ

2 голосов
/ 06 мая 2012

Два XML-документа эквивалентны, поэтому проблем не должно быть, если документ анализируется совместимым с XML агентом.

Сгенерированный документ Savon просто создает префикс пространства имен ins0 для "НЕКОТОРЫЙ URL "пространство имен.Это удобно для большого документа SOAP со многими элементами из этого пространства имен.В этом примере префикс на самом деле не нужен.

Единственная потенциальная проблема, которую я вижу, это то, что сгенерированный Savion документ, кажется, объявляет пространство имен ins0 дважды - один раз в soap: Envelope, а затем снова в soap: Body.Кажется излишним и потенциально открытым для ошибки.

...