izmenjeno 1 put, poslednji put mmix 19.06.2010. u 18:09
Izmene poruke
- mmix19.06.2010. u 18:09zapis iz teksta poruke
Ne znam koliko ljudi ovde je imalo prilika da radi sa ovim sistemom ali sobzirom da ja nisam neki XML/WSDL/XSD mag vrlo je verovatno da ovaj problem nije Cast Iron specific.
Radi se o tome da ja imam web service napisan u c# 2.0 sa jednom metodom koju jedan moj klijent poziva koristeci Cast Iron. Wsdl izgleda ovako:
Prvi problem se javlja kada on pozove moj web service sa sledecim xml-om:
Meni kao ulazni parametar metode stigne isti taj xml ali element <Root> sadrzi atribut xmlns="xxxx.com". Znaci <Root xmlns="xxxx.com">... Tada xPath nece da radi. Medjutim, taj problem sam nekako i resio tako sto odbacim taj atribut. Problem je sto ja kada kao izlazni argument metode vratim njemu sledeci xml:
Cast Iron opet doda xmlns atribut, ovoga puta na Result samo sto je ovoga puta vrednost tog atributa prazna. Znaci <Result xmlns="">. Sada se njemu tamo razlecu xPath-ovi ali on ne moze rucno da ukloni taj atribut.
Pre svega, ima li nekoga da je razumeo problem posto sam bio bas opsiran? Ako ima, bio bih zahvalan ako bi neko mogao da mi pomogne oko ovoga.
Hvala
Radi se o tome da ja imam web service napisan u c# 2.0 sa jednom metodom koju jedan moj klijent poziva koristeci Cast Iron. Wsdl izgleda ovako:
Code (xml):
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://xxxx.com/" xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace="http://xxxx.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://xxxx.com/">
<s:element name="AUXTableAdministration">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="action" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="tableName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="xDoc" type="tns:InsertUpdateDeleteRowsRequest"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="InsertUpdateDeleteRowsRequest">
<s:sequence>
<s:element name="Root">
<s:complexType>
<s:sequence>
<s:element maxOccurs="1" minOccurs="1" name="Columns">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="1" name="Column" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element maxOccurs="1" minOccurs="1" name="Rows">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="1" name="Row">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="1" name="Value" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
<s:element name="AUXTableAdministrationResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AUXTableAdministrationResult" type="tns:InsertUpdateDeleteRowsResponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="InsertUpdateDeleteRowsResponse">
<s:sequence>
<s:element name="Result">
<s:complexType>
<s:sequence>
<s:element name="Status" type="tns:oknok" maxOccurs="1" minOccurs="1" />
<s:element name="InsertedId" type="s:integer" maxOccurs="1" minOccurs="1" />
<s:element name="Message" type="s:string" maxOccurs="1" minOccurs="1" />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
<s:simpleType name="oknok">
<s:restriction base="s:string">
<s:enumeration value="OK" />
<s:enumeration value="NOK" />
</s:restriction>
</s:simpleType>
</s:schema>
</wsdl:types>
<wsdl:message name="AUXTableAdministrationSoapIn">
<wsdl:part name="parameters" element="tns:AUXTableAdministration"/>
</wsdl:message>
<wsdl:message name="AUXTableAdministrationSoapOut">
<wsdl:part name="parameters" element="tns:AUXTableAdministrationResponse"/>
</wsdl:message>
<wsdl:portType name="WsSrvSoap">
<wsdl:operation name="AUXTableAdministration">
<wsdl:input message="tns:AUXTableAdministrationSoapIn"/>
<wsdl:output message="tns:AUXTableAdministrationSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WsSrvSoap" type="tns:WsSrvSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="AUXTableAdministration">
<soap:operation soapAction="http://xxxx.com/AUXTableAdministration" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="WsSrvSoap12" type="tns:WsSrvSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="AUXTableAdministration">
<soap12:operation soapAction="http://xxxx.com/AUXTableAdministration" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WsSrv">
<wsdl:port name="WsSrvSoap" binding="tns:WsSrvSoap">
<soap:address location="http://dev.yyyy.com/wsAPI/WsSrv.asmx"/>
</wsdl:port>
<wsdl:port name="WsSrvSoap12" binding="tns:WsSrvSoap12">
<soap12:address location="http://dev.yyyy.com/wsAPI/WsSrv.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://xxxx.com/" xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace="http://xxxx.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://xxxx.com/">
<s:element name="AUXTableAdministration">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="action" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="tableName" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="xDoc" type="tns:InsertUpdateDeleteRowsRequest"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="InsertUpdateDeleteRowsRequest">
<s:sequence>
<s:element name="Root">
<s:complexType>
<s:sequence>
<s:element maxOccurs="1" minOccurs="1" name="Columns">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="1" name="Column" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element maxOccurs="1" minOccurs="1" name="Rows">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="1" name="Row">
<s:complexType>
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="1" name="Value" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
<s:element name="AUXTableAdministrationResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="AUXTableAdministrationResult" type="tns:InsertUpdateDeleteRowsResponse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="InsertUpdateDeleteRowsResponse">
<s:sequence>
<s:element name="Result">
<s:complexType>
<s:sequence>
<s:element name="Status" type="tns:oknok" maxOccurs="1" minOccurs="1" />
<s:element name="InsertedId" type="s:integer" maxOccurs="1" minOccurs="1" />
<s:element name="Message" type="s:string" maxOccurs="1" minOccurs="1" />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
<s:simpleType name="oknok">
<s:restriction base="s:string">
<s:enumeration value="OK" />
<s:enumeration value="NOK" />
</s:restriction>
</s:simpleType>
</s:schema>
</wsdl:types>
<wsdl:message name="AUXTableAdministrationSoapIn">
<wsdl:part name="parameters" element="tns:AUXTableAdministration"/>
</wsdl:message>
<wsdl:message name="AUXTableAdministrationSoapOut">
<wsdl:part name="parameters" element="tns:AUXTableAdministrationResponse"/>
</wsdl:message>
<wsdl:portType name="WsSrvSoap">
<wsdl:operation name="AUXTableAdministration">
<wsdl:input message="tns:AUXTableAdministrationSoapIn"/>
<wsdl:output message="tns:AUXTableAdministrationSoapOut"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WsSrvSoap" type="tns:WsSrvSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="AUXTableAdministration">
<soap:operation soapAction="http://xxxx.com/AUXTableAdministration" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="WsSrvSoap12" type="tns:WsSrvSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="AUXTableAdministration">
<soap12:operation soapAction="http://xxxx.com/AUXTableAdministration" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WsSrv">
<wsdl:port name="WsSrvSoap" binding="tns:WsSrvSoap">
<soap:address location="http://dev.yyyy.com/wsAPI/WsSrv.asmx"/>
</wsdl:port>
<wsdl:port name="WsSrvSoap12" binding="tns:WsSrvSoap12">
<soap12:address location="http://dev.yyyy.com/wsAPI/WsSrv.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Prvi problem se javlja kada on pozove moj web service sa sledecim xml-om:
Code (xml):
<?xml version="1.0" ?>
- <AUXTableAdministration xmlns="http://xxxx.com/">
<userName>gbravaccini</userName>
<password>xyz</password>
<action>INSERTROWS</action>
<tableName>PRODUCTS_DATA</tableName>
- <xDoc>
- <Root>
- <Columns>
<Column>CATEGORY</Column>
<Column>CATEGORY_DSCA</Column>
<Column>SUB_CATEGORY</Column>
<Column>SUB_CATEGORY_DSCA</Column>
<Column>GRP_ART_COD</Column>
<Column>GRP_ART_DSCA</Column>
<Column>SIT</Column>
<Column>SIT_DESCR</Column>
<Column>SUNO</Column>
<Column>ISCN</Column>
<Column>PROD_COMP</Column>
<Column>LBN1</Column>
<Column>PART_NO</Column>
<Column>PRODUCT_NAME</Column>
<Column>MODEL</Column>
<Column>COMM_DSCA_EN</Column>
<Column>TECH_DSCA_EN</Column>
<Column>LINE</Column>
<Column>MODEL_NAME</Column>
<Column>VERSION</Column>
<Column>ADDITIONAL_WEIGHT</Column>
<Column>FRAME</Column>
<Column>UPHOLSTERY_A</Column>
<Column>PLASTIC</Column>
<Column>MARKET</Column>
<Column>UNIT</Column>
<Column>WEIGHT_STACK</Column>
<Column>POWER_SUPPLY</Column>
<Column>DISPLAY</Column>
<Column>READER</Column>
<Column>SEAT</Column>
<Column>SHROUDS</Column>
<Column>TV</Column>
<Column>LANGUAGE</Column>
<Column>PACKAGING</Column>
<Column>LOCALISATION</Column>
<Column>ARMS</Column>
<Column>DRIVE_SYSTEM</Column>
<Column>SAFETY_CLUTCH</Column>
<Column>CERTIFICATION</Column>
<Column>CONFIGURATION</Column>
<Column>UPHOLSTERY_B</Column>
<Column>UPHOLSTERY_C</Column>
</Columns>
- <Rows>
- <Row>
<Value />
<Value />
<Value />
<Value />
<Value>125</Value>
<Value>CARDIO EXCITE</Value>
<Value>002</Value>
<Value>Cardio</Value>
<Value>S00101</Value>
<Value />
<Value>480</Value>
<Value>0</Value>
<Value>TEST-DA43MLTAL00</Value>
<Value>Treadmill Excite+ Jog 700</Value>
<Value>DA43MLT</Value>
<Value>Excite+ Treadmill Jog 700, Display: LED, Reader: Wellness System, Frame: Grey, Shrouds: Flint Grey, Language: French</Value>
<Value>Line: Excite+, Model: Treadmill, Version: Jog 700, Power Supply: Medical version, Display: LED, Reader: Wellness System, Frame: Grey, Shrouds: Flint Grey, Language: French, Packaging: Standard International</Value>
<Value>Excite+</Value>
<Value>Treadmill</Value>
<Value>Jog 700</Value>
<Value />
<Value>Grey</Value>
<Value />
<Value />
<Value />
<Value />
<Value />
<Value>Medical version</Value>
<Value>LED</Value>
<Value>Wellness System</Value>
<Value />
<Value>Flint Grey</Value>
<Value />
<Value>French</Value>
<Value>Standard International</Value>
<Value />
<Value />
<Value />
<Value />
<Value />
<Value />
<Value />
<Value />
</Row>
</Rows>
</Root>
</xDoc>
</AUXTableAdministration>
<?xml version="1.0" ?>
- <AUXTableAdministration xmlns="http://xxxx.com/">
<userName>gbravaccini</userName>
<password>xyz</password>
<action>INSERTROWS</action>
<tableName>PRODUCTS_DATA</tableName>
- <xDoc>
- <Root>
- <Columns>
<Column>CATEGORY</Column>
<Column>CATEGORY_DSCA</Column>
<Column>SUB_CATEGORY</Column>
<Column>SUB_CATEGORY_DSCA</Column>
<Column>GRP_ART_COD</Column>
<Column>GRP_ART_DSCA</Column>
<Column>SIT</Column>
<Column>SIT_DESCR</Column>
<Column>SUNO</Column>
<Column>ISCN</Column>
<Column>PROD_COMP</Column>
<Column>LBN1</Column>
<Column>PART_NO</Column>
<Column>PRODUCT_NAME</Column>
<Column>MODEL</Column>
<Column>COMM_DSCA_EN</Column>
<Column>TECH_DSCA_EN</Column>
<Column>LINE</Column>
<Column>MODEL_NAME</Column>
<Column>VERSION</Column>
<Column>ADDITIONAL_WEIGHT</Column>
<Column>FRAME</Column>
<Column>UPHOLSTERY_A</Column>
<Column>PLASTIC</Column>
<Column>MARKET</Column>
<Column>UNIT</Column>
<Column>WEIGHT_STACK</Column>
<Column>POWER_SUPPLY</Column>
<Column>DISPLAY</Column>
<Column>READER</Column>
<Column>SEAT</Column>
<Column>SHROUDS</Column>
<Column>TV</Column>
<Column>LANGUAGE</Column>
<Column>PACKAGING</Column>
<Column>LOCALISATION</Column>
<Column>ARMS</Column>
<Column>DRIVE_SYSTEM</Column>
<Column>SAFETY_CLUTCH</Column>
<Column>CERTIFICATION</Column>
<Column>CONFIGURATION</Column>
<Column>UPHOLSTERY_B</Column>
<Column>UPHOLSTERY_C</Column>
</Columns>
- <Rows>
- <Row>
<Value />
<Value />
<Value />
<Value />
<Value>125</Value>
<Value>CARDIO EXCITE</Value>
<Value>002</Value>
<Value>Cardio</Value>
<Value>S00101</Value>
<Value />
<Value>480</Value>
<Value>0</Value>
<Value>TEST-DA43MLTAL00</Value>
<Value>Treadmill Excite+ Jog 700</Value>
<Value>DA43MLT</Value>
<Value>Excite+ Treadmill Jog 700, Display: LED, Reader: Wellness System, Frame: Grey, Shrouds: Flint Grey, Language: French</Value>
<Value>Line: Excite+, Model: Treadmill, Version: Jog 700, Power Supply: Medical version, Display: LED, Reader: Wellness System, Frame: Grey, Shrouds: Flint Grey, Language: French, Packaging: Standard International</Value>
<Value>Excite+</Value>
<Value>Treadmill</Value>
<Value>Jog 700</Value>
<Value />
<Value>Grey</Value>
<Value />
<Value />
<Value />
<Value />
<Value />
<Value>Medical version</Value>
<Value>LED</Value>
<Value>Wellness System</Value>
<Value />
<Value>Flint Grey</Value>
<Value />
<Value>French</Value>
<Value>Standard International</Value>
<Value />
<Value />
<Value />
<Value />
<Value />
<Value />
<Value />
<Value />
</Row>
</Rows>
</Root>
</xDoc>
</AUXTableAdministration>
Meni kao ulazni parametar metode stigne isti taj xml ali element <Root> sadrzi atribut xmlns="xxxx.com". Znaci <Root xmlns="xxxx.com">... Tada xPath nece da radi. Medjutim, taj problem sam nekako i resio tako sto odbacim taj atribut. Problem je sto ja kada kao izlazni argument metode vratim njemu sledeci xml:
Code (xml):
<?xml version="1.0" ?>
<AUXTableAdministrationResponse xmlns="http://xxxx.com/">
<AUXTableAdministrationResult>
<Result>
<Status>OK</Status>
<InsertedId>51716</InsertedId>
<Message>action 'INSERTROWS' for PRODUCTS_DATA succeeded</Message>
</Result>
</AUXTableAdministrationResult>
</AUXTableAdministrationResponse>
<?xml version="1.0" ?>
<AUXTableAdministrationResponse xmlns="http://xxxx.com/">
<AUXTableAdministrationResult>
<Result>
<Status>OK</Status>
<InsertedId>51716</InsertedId>
<Message>action 'INSERTROWS' for PRODUCTS_DATA succeeded</Message>
</Result>
</AUXTableAdministrationResult>
</AUXTableAdministrationResponse>
Cast Iron opet doda xmlns atribut, ovoga puta na Result samo sto je ovoga puta vrednost tog atributa prazna. Znaci <Result xmlns="">. Sada se njemu tamo razlecu xPath-ovi ali on ne moze rucno da ukloni taj atribut.
Pre svega, ima li nekoga da je razumeo problem posto sam bio bas opsiran? Ako ima, bio bih zahvalan ako bi neko mogao da mi pomogne oko ovoga.
Hvala