# EXSD auslesen mit XPath und JDOM



## thomet (17. Sep 2008)

Hy,
ich möchte eine exsd datei auslesen (xml aufbau) ... bis jetzt hat das eigentliche auslesen von xml datein bei mir wunderbar funktioniert. hab dazu jdom und xpath benutzt.

nun möchte ich halt ne xml datei auslesen die zb so aufgebaut ist


```
<?xml version='1.0' encoding='UTF-8'?>

<schema targetNamespace="de.thomet.imagetool" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appinfo>
         <meta.schema plugin="de.thomet.imagetool" id="imagetool.interfaces.News" name="News"/>
      </appinfo>
      <documentation>
         [Enter description of this extension point.]
      </documentation>
</annotation>
...
```

hab folgendes gemacht an der stelle von xpath:

```
xpath = XPath.newInstance( "/annotation/appinfo/meta.schema" );
xmlBaum = xpath.selectNodes( doc );
			
for ( Object objPlugin : xmlBaum) {
	Element plugin = (Element) objPlugin;
	String pl = plugin.getAttribute("id").getValue();
	System.out.println(pl);
}
```

also ich möchte im endefekt in pl das haben = tool.interfaces.News ..

ja nun bekomme ich keine fehlermeldung und in pl ist auch nix drinn... ich weiß net warum
könnt ihr mir eventuell helfen.. 

(ich vermute das es was mit diesem . in meta.schema zu tuhen hat.. aber das ist nur speckuliert)


----------



## foobar (17. Sep 2008)

Lass dir doch mal alle Kindsknoten deines gefundenen Knotens objPlugin ausgeben, damit du sicher sein kannst, daß du auch den richtigen Knoten gefunden hast.
Der Xpath Ausdruck sieht korrekt aus.


----------



## thomet (17. Sep 2008)

nen kleinen fehler ab ich eben selber gefunden.. jedoch hilft der trozdem net weiter: (das schema davor hat noch gefehlt)

```
xpath = XPath.newInstance( "/schema/annotation/appinfo/meta.schema" );
```

und die for schleife wird garnicht erst ausgeführt.. also muß xmlBaum wo nix enthalten sein


----------



## foobar (17. Sep 2008)

Dann probier es mal so:


```
xpath = XPath.newInstance( "//schema//annotation//appinfo//meta.schema" );
```


----------



## thomet (17. Sep 2008)

hab ich probiert.. bringt leider auch nix

wie gesagt hab ma die vermutung das es mit dem . zusammen hängt... kann das sein das er probleme macht


----------



## foobar (17. Sep 2008)

Kann schon sein. Vielleicht muß man den maskieren. Ersetz den Elementnamen doch mal durch metaschema.


----------



## thomet (17. Sep 2008)

hab mit eben ma so nen xpath tester besort... und mitbekommen das der netma /schema einlesen kann.. also muß was mit dem xml dokument sein.. aber was?


----------



## Wildcard (17. Sep 2008)

Ist doch vielleicht sinnvoller wenn du dafür die Eclipse Klassen verwendest, oder? Eclipse muss das Schema schließlich auch verstehen und dafür wird sicherlich eine Public API im PDE  angeboten.


----------



## thomet (17. Sep 2008)

ok es liegt nicht am java code sonder an der xml datei:

```
<schema targetNamespace="de.thomet.imagetool" xmlns="http://www.w3.org/2001/XMLSchema">
```
wenn ich diese so ändere dann geht es

```
<schema targetNamespace="de.thomet.imagetool" xmlns:irgendwas="http://www.w3.org/2001/XMLSchema">
```
....

mit viel rumgespiele und probieren habe ich nun das erreicht was ich will mit folgenden xpath befehl

```
/*[local-name()='schema']/*[local-name()='annotation']/*[local-name()='appinfo']/*[local-name()='meta.schema']
```


----------

