# Problem beim Parsen von Attribut xmlns="urn:com:test&qu



## Tho82 (15. Jan 2009)

Hallo,

ich lege einen Tag an mit dem folgenden Namen und dem folgenden Attribut xmlns:

```
<freetext xmlns="urn:com:test"</freetext>
```

Ich parse nun das Document mit XPath:

```
expr = xpath.compile("//freetext");
result = expr.evaluate(doc, XPathConstants.NODESET);
nodes = (NodeList) result;
```

Nun bekomme ich das Ergebnis dass kein solcher Knoten gefunden wurde.. Lasse ich jedoch das Attribut xmlns weg, funktioniert es? Hat jemand eine Ahnung wo das Problem liegt?

Vielen Dank im Voraus.

Tho


----------



## Ebenius (15. Jan 2009)

Funktioniert das? 
	
	
	
	





```
expr = xpath.compile("//{urn:com:test}freetext");
```

Ebenius


----------



## Guest (15. Jan 2009)

Tho82 hat gesagt.:
			
		

> Hallo,
> 
> ich lege einen Tag an mit dem folgenden Namen und dem folgenden Attribut xmlns:
> 
> ...



Ich habe leider oben die Klammer vergessen, der Tag sieht richtigerweise wie folgt aus:

```
<freetext xmlns="urn:com:test">TestText</freetext>
```

So funktioniert es nciht zu parsen, warum nicht?


----------



## Tho82 (15. Jan 2009)

Ebenius hat gesagt.:
			
		

> Funktioniert das?
> 
> 
> 
> ...



Nein, da erhalte ich folgende Exception:


```
javax.xml.transform.TransformerException: Nach dem Token '/' oder '//' wurde ein Positionsschritt erwartet.
	at com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:608)
```

Weitere Ideen?


----------



## Ebenius (15. Jan 2009)

Anonymous hat gesagt.:
			
		

> Nein, da erhalte ich folgende Exception:[...]



Hatte ich auch feststellen müssen. Leider erst gepostet. *gg*

Wie ist's damit? 
	
	
	
	





```
final NamespaceContext nsContext = new NamespaceContext() {

  @Override
  public Iterator<String> getPrefixes(String namespaceURI) {
    return Arrays.asList(new String[] { "ns" }).iterator();
  }

  @Override
  public String getPrefix(String namespaceURI) {
    return "urn:com:test".equals(namespaceURI) ? "ns" : null;
  }

  @Override
  public String getNamespaceURI(String prefix) {
    return "ns".equals(prefix) ? "urn:com:test" : null;
  }
};
xpath.setNamespaceContext(nsContext);
xpath.compile("//ns:freetext");
```

Infos hab ich hier gefunden, eklige Seite, aber der Inhalt hat geholfen.

// EDIT: Die anderen Beispiele auf der Seite helfen sicher noch weiter und verringern ggf. den Aufwand.

Ebenius


----------



## Guest (15. Jan 2009)

Ebenius hat gesagt.:
			
		

> Anonymous hat gesagt.:
> 
> 
> 
> ...



Okay hat funktioniert, vielen Dank. Zur Vervollständigung, falls nachfolgende Tags kommen einfach bei jedem Tag "ns:" davor machen:


```
xpath.compile("//ns:freetext/ns:mytag/ns:mysecondtag");
```
[/code]


----------



## Ebenius (15. Jan 2009)

Genau. Aber lies nochmal auf der oben angebenen Seite; das geht vielleicht auch hübscher.

Grüße, Ebenius


----------

