# Namespace Präfixe eines Elements



## Wildcard (13. Mrz 2008)

Gegeben sei folgende XML

```
<parent xmlns:ns0="foo.bar">
   <child xmlns:ns1="bar.foo">
       <uselessChild ..../>
   </child>
</parent>
```
Mit welcher API bekomme ich nun auf welche Weise alle Präfixe die child definiert?
Wichtig, ich will nicht alle Präfixe, sondern nur die, die Explizit im Scope 'child' deklariert wurden.
Jemand eine Idee?


----------



## abollm (1. Apr 2008)

Wildcard hat gesagt.:
			
		

> Gegeben sei folgende XML
> 
> ```
> <parent xmlns:ns0="foo.bar">
> ...



Um dich weiter oben (fast) wenigstens teilweise zu zitieren:
Dass ich das richtig verstehe: 

Du hast in deiner XML-Datei ein Element <child> und willst alle Präfixe der innerhalb der betr. Beginn- und End-Kennung deklarierten Präfixe auslesen?


----------



## Wildcard (1. Apr 2008)

Genau, alle in einem Child Element definierten Präfix->Namespace Mappings will ich haben.


----------



## abollm (1. Apr 2008)

Gut, dann habe ich das schon einmal verstanden.

Hättest du mal ein etwas konkreteres Beispiel für die XML-Datei? Dann könnte ich damit mal herumspielen.

Folgender Ansatz ... argh, jetzt habe ich das Problem wohl durchdrungen! 

Hm, ich überlege noch...


----------



## Wildcard (1. Apr 2008)

Realdaten kann ich aufgrund der Sensibilität leider nicht liefern, aber wenn es hilft, kann ich was zusammenschreiben.
Danke schonmal für deinen Einsatz.
Ich hole mal etwas aus um das Problem genauer zu beschreiben.
Es handelt sich um einen komplexen BPEL Prozess. Dort sind einige XML Elemente (BPEL Scopes) die eigene Präfix Deklarationen vornehmen, die sich mit den globalen Deklarationen überschneiden.
Leider müssen die Präfixe erhalten bleiben, da sich innerhalb dieser Scopes BPEL XPath Queries auf die lokalen Präfixe beziehen.
Ich möchte nun die BPEL Datei parsen und alle Scopes die eigene Präfixe deklarieren aus dem Baum heraustrennen und durch andere XML Elemente ersetzen.
Die ausgeschnittenen Scopes sollen anschließend in eine eigene XML Datei geschrieben werden.
All das ist mit SAX ziemlich furchtbar, daher hoffe ich auf eine objektorientierte Lösung des Problems.


----------



## Wildcard (1. Apr 2008)

Ok, Minimalbeispiel:

Quelldatei:


```
<parent xmlns:ns0="http://foobar.org">
   <child xmlns:ns0="http://foobar.org/someDistinctNamespace xmlns:ns1="http://barfoo.org">
       <uselessChild>
            
            <someQuery value="ns0:example" />
       </uselessChild>
   </child>
</parent>
```

Zieldatei 1:


```
<parent xmlns:ns0="http://foobar.org">
   <replacedchild />
</parent>
```

Zieldatei 2:


```
<anotherParent xmlns:ns0="http://foobar.org/someDistinctNamespace xmlns:ns1="http://barfoo.org">
       <uselessChild>
            <someQuery value="ns0:example" />
       </uselessChild>
</anotherParent>
```


----------



## abollm (1. Apr 2008)

OK, gut dass ich gewartet habe, denn ich war schon versucht eine eigene Beispiel-Datei zu posten.

Ich habe mir die XML-Beispiele schon kopiert und werde mir das nachher einmal näher anschauen. Mal sehen, wie weit ich meinen Versuchen komme.


----------



## Wildcard (1. Apr 2008)

Das würde ich sehr zu schätzen wissen. Sicher, mit einem SAX Parser kriege ich das schon hin, aber ich denke du siehst warum ich auf eine 'schönere' Lösung hoffe.
Wenn du also eine zündende Idee hast, wäre ich dir sehr dankbar.


----------



## abollm (2. Apr 2008)

@Wildcard:
Ich muss heute leider weg und komme erst morgen spät am Abend wieder zurück. Aber ich habe begonnen und verfolge einen Ansatz. Ich melde mich am kommenden Freitag hier wieder zum Thema.


----------

