# Arbeiten mit Referenzen



## miketech (13. Jan 2013)

Hallo zusammen,

ich muss derzeit manuell XML-Files einlesen, in denen Referenzen genutzt werden. Als Beispiel ein WSDL-File:


```
...
	<message name="KeywordSearchRequest">
		<!-- Messages for Amazon Web APIs -->
		<part name="KeywordSearchRequest" type="typens:KeywordRequest"/>
	</message>

<portType name="AmazonSearchPort">
		<!-- Port for Amazon Web APIs -->
		<operation name="KeywordSearchRequest">
			<input message="typens:KeywordSearchRequest"/>
			<output message="typens:KeywordSearchResponse"/>
		</operation>
</portType>
...
```

Wie man hier sieht, wird innerhalb der Operation eine Message referenziert. Wie finde ich nun diese Message am einfachsten? Muss ich den String des Attributs "message" bei input parsen und dann manuell ein Message-Element mit diesem Namen suchen? Oder gibt es hier eine effizientere Möglichkeit?

Interessant ist nämlich auch die Angabe des Prefix "typens". D.h. ich muss ja auch noch sicherstellen, dass sich diese Message in einem WSDL-Dokument mit diesem prefix bzw. dem dazugehörigen Namespace als TargetNamespace befindet.

Viele Grüße

Mike


----------



## Bleiglanz (14. Jan 2013)

Bist du sicher dass du eine WSDL-Datei von Hand parsen willst? Warum verwendest du nicht JAXB bzw. JAX-WS?


----------



## Marcinek (14. Jan 2013)

wsimport wäre hier das richtige werkzeug.


----------



## miketech (14. Jan 2013)

Hallo zusammen,

danke für Eure Antworten. Unter normalen Umständen habt ihr natürlich absolut recht. Die WSDL-Datei ist aber nur ein Beispiel. Ich arbeite noch mit vielen anderen proprietären XML-Dateien, die ähnlich aufgebaut sind. Hier steht mir dann kein Framework zur Verfügung, ebenso kein XSD. Daher muss ich auch auf manuellem Wege zum Ziel kommen 

Viele Grüße

Mike


----------



## Bleiglanz (14. Jan 2013)

miketech hat gesagt.:


> ...
> 
> Wie man hier sieht, wird innerhalb der Operation eine Message referenziert. Wie finde ich nun diese Message am einfachsten? Muss ich den String des Attributs "message" bei input parsen und dann manuell ein Message-Element mit diesem Namen suchen? Oder gibt es hier eine effizientere Möglichkeit?


Seh ich nicht, du könntest beim ersten Parsen (SAX?) eine java.util.Map mit relevanten Informationen anlegen.

Oder mit DOM und XPath nach dem Parsen relevante Sachen extrahieren.

Hängt von der Komplexität ab.


----------

