2014-12-24 2 views
1

Suds кажется, есть проблемы разбора следующие XSD:Howto набор "текст" значение для пены веб-сервиса объекта

<element name="quantity" minOccurs="1" maxOccurs="1"> 
    <annotation> 
     <documentation>Quantity of this item that's being ordered.</documentation> 
    </annotation> 
    <complexType> 
     <simpleContent> 
      <extension base="int"> 
       <attribute name="unitOfMeasure" use="required"> 
        <annotation> 
         <documentation> 
          Unit of measurement. 

          The attribute can have the 
          following values: PCS - pieces 
          SEC- seconds BYT - bytes KB - 
          kilobytes 
         </documentation> 
        </annotation> 
        <simpleType> 
         <restriction base="string"> 
          <enumeration value="PCS" /> 
          <enumeration value="SEC" /> 
          <enumeration value="BYT" /> 
          <enumeration value="KB" /> 
         </restriction> 
        </simpleType> 
       </attribute> 
      </extension> 
     </simpleContent> 
    </complexType> 
</element> 

XML, должен выглядеть следующим образом:

<ns0:quantity unitOfMeasure="PCS">1</ns:quantity> 

К сожалению, я могу только установите атрибут:

>>> c.factory.create('ns0:item.quantity') 
(quantity){ 
    _unitOfMeasure = "" 
} 

не имеет возможности установить «текстовое» значение узла XML.

Я пытался создавать XML буквально:

element = Element('ns0:quantity') 
element.setText("1") 
element.set('unitOfMeasure', "PCS") 

и мимоходом, что в качестве параметра.

Это хорошо выглядит в журнале отладки (как <ns0:quantity unitOfMeasure="PCS">1</ns0:quantity>), но фактический запрос показывает, что это значение будет сериализовать:

<ns0:quantity /> 

Я заблудиться здесь. Как я могу правильно представить это значение?

Я использую мыльную пену 0,4

+1

Не используйте пены, попробуйте suds-jurko: https://pypi.python.org/pypi/suds-jurko/0.6, который является поддерживаемой вилкой пены. Если проблема все еще встречается там, мы можем проверить, может ли что-то быть подклассифицировано/сделано для ее исправления. –

ответ

3

Просто нашел временный обходной путь.

проблема также случается с suds-jurko. Несмотря на то, что ведение журнала в формате suds.client довольно формально отображает XML-элемент , необработанное ведение журнала в suds.transport.http показывает, что «простой» вывод не может сериализовать элемент.

Включив client.options.prettyxml = True, этот вопрос обходит.

Смежные вопросы