Webservice Client ohne WSDL erstellen

tbender

Grünschnabel
Hallo alle zusammen,

Ich habe gerade ein Projekt in dem es um RSS-Feeds geht.
Da es von RSS so circa gefühlte zweihundertausendrehundertundachzig
Versionen gibt, die alle ein bisschen anders sind, würde ich gerne
die Feeds mit denen ich umgehe erstmal gegen den Validator vom W3C
prüfen. Einfach um zu sehen was da so an Problemchen vorkommen kann
und diese dann später programmatisch auch zu berücksichtigen.

Hier mal ein Beispiel für den Feed von Tutorials.de

Der Validator lebt unter:
http://validator.w3.org/feed/

Das gute Stück hat auch ein SOAP-Interface:
http://validator.w3.org/feed/docs/soap.html

Dummerweise existieren zu diesem Service keine WSDL und keine XSD für die Messages. Ich bin zwar dabei auf der entsprechenden ML nachzuforschen, aber da hat sich noch nicht viel ergeben.

Was wäre eurer Meinung nach das Beste?
  • 100 Leute rekrutieren, die auch auf der ML nach einem WSDL und einer XSD fragen :D
  • WSDL und XSD "reverse engineeren"
  • Manuell Parsen (Welche API nehmen? JAX, StaX, DOM, JAXP ... :confused:)
 
So. Ich habe jetzt mal eine XSD für die Antworten des Service erstellt.

Leider habe ich noch immer keine Ahnung wie ich damit jetzt ein passendel WSDL-Datei schreiben kann.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.w3.org/2005/10/feed-validator"
	xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2005/10/feed-validator">
	<xs:element name="feedvalidationresponse" type="feedvalidationresponseType" />
	<xs:complexType name="feedvalidationresponseType">
		<xs:sequence>
			<xs:element ref="uri" />
			<xs:element ref="checkedby" />
			<xs:element ref="date" />
			<xs:element ref="validity" />
			<xs:element ref="errors" />
			<xs:element ref="warnings" />
			<xs:element ref="informations" />
		</xs:sequence>
	</xs:complexType>

	<xs:element name="uri" type="xs:anyURI" />
	<xs:element name="checkedby" type="xs:string" />
	<xs:element name="date" type="xs:dateTime" />
	<xs:element name="validity" type="xs:boolean" />

	<xs:element name="errors" type="errorsType" />
	<xs:complexType name="errorsType">
		<xs:sequence>
			<xs:element ref="errorcount" />
			<xs:element ref="errorlist" />
		</xs:sequence>
	</xs:complexType>
	<xs:element name="errorcount">
		<xs:simpleType>
			<xs:restriction base="xs:int">
				<xs:minInclusive value="0" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="errorlist" type="errorlistType"></xs:element>
	<xs:complexType name="errorlistType">
		<xs:sequence>
			<xs:element name="error" type="errorType" maxOccurs="unbounded"
				minOccurs="0" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="errorType">
		<xs:sequence>
			<xs:element name="level" type="xs:string"></xs:element>
			<xs:element name="type" type="xs:string"></xs:element>
			<xs:element name="line" type="xs:int" />
			<xs:element name="column" type="xs:int" />
			<xs:element name="text" type="xs:string"></xs:element>
			<xs:element name="msgcount" type="xs:int"></xs:element>
			<xs:element name="backupcolumn" type="xs:int" maxOccurs="1"
				minOccurs="0"></xs:element>
			<xs:element name="backupline" type="xs:int" maxOccurs="1"
				minOccurs="0"></xs:element>
			<xs:element name="element" type="xs:string"></xs:element>
			<xs:element name="parent" type="xs:string"></xs:element>
			<xs:element name="value" type="xs:string" maxOccurs="1"
				minOccurs="0"></xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:element name="warnings" type="warningsType" />
	<xs:complexType name="warningsType">
		<xs:sequence>
			<xs:element ref="warningcount" />
			<xs:element ref="warninglist" />
		</xs:sequence>
	</xs:complexType>
	<xs:element name="warningcount">
		<xs:simpleType>
			<xs:restriction base="xs:int">
				<xs:minInclusive value="0" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="warninglist" type="warninglistType"></xs:element>
	<xs:complexType name="warninglistType">
		<xs:sequence>
			<xs:element name="warning" type="warningType" maxOccurs="unbounded"
				minOccurs="0"></xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="warningType">
		<xs:sequence>
			<xs:element name="level" type="xs:string"></xs:element>
			<xs:element name="line" type="xs:int" />
			<xs:element name="column" type="xs:int" />
			<xs:element name="text" type="xs:string"></xs:element>
			<xs:element name="msgcount" type="xs:int"></xs:element>
			<xs:element name="element" type="xs:string"></xs:element>
			<xs:element name="parent" type="xs:string"></xs:element>
			<xs:element name="value" type="xs:string"></xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:element name="informations" type="informationsType"></xs:element>
	<xs:complexType name="informationsType">
		<xs:sequence>
			<xs:element ref="infocount" />
			<xs:element ref="infolist" />
		</xs:sequence>
	</xs:complexType>
	<xs:element name="infocount">
		<xs:simpleType>
			<xs:restriction base="xs:int">
				<xs:minInclusive value="0" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="infolist" type="infolistType"></xs:element>
	<xs:complexType name="infolistType">
		<xs:sequence>
			<xs:element name="info" type="infoType" maxOccurs="unbounded"
				minOccurs="0"></xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="infoType">
		<xs:sequence>
			<xs:element name="level" type="xs:string"></xs:element>
			<xs:element name="type" type="xs:string"></xs:element>
			<xs:element name="line" type="xs:int" />
			<xs:element name="column" type="xs:int" />
			<xs:element name="text" type="xs:string"></xs:element>
			<xs:element name="msgcount" type="xs:int"></xs:element>
			<xs:element name="backupcolumn" type="xs:int" maxOccurs="1"
				minOccurs="0"></xs:element>
			<xs:element name="backupline" type="xs:int" maxOccurs="1"
				minOccurs="0"></xs:element>
			<xs:element name="element" type="xs:string"></xs:element>
			<xs:element name="parent" type="xs:string"></xs:element>
			<xs:element name="value" type="xs:string" maxOccurs="1"
				minOccurs="0"></xs:element>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
 

Neue Beiträge

Zurück