# XPATH Befehl SVG Java



## AMStyles (7. Feb 2012)

Hallo Foren User,

ich möchte eine SVG Grafik über DOM einlesen.
Bei einem XML funktioniert das ohne Probleme, da ich in einem Beispieldokument keine Unterknoten habe.
Bei meiner SVG Grafik sieht das so aus.

[XML]<svg
.
.
.
.
<g
     inkscape:label="Ebene 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(0,-752.36218)">
    <rect
       style="fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
       id="rect2985"
       width="94.827583"
       height="94.827583"
       x="31.896551"
       y="13.793103"
       transform="translate(0,752.36218)" />
</g>
</sv[/XML]

Wie komme ich nun an die einzelnen Metadaten (width, heigtht...) heran?
Im moment versuche ich es über eine XPath Funktion.


```
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
    domFactory.setNamespaceAware(true); // never forget this!
    DocumentBuilder builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse("c:\\myfile.xml");

    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    XPathExpression expr = xpath.compile("//book[author='Neal Stephenson']/title/text()");
```

Über "XPathExpression expr = xpath.compile("//g/rect");" funktiont es nicht.

Danke & Grüße,
AMStyles


----------



## Tomate_Salat (7. Feb 2012)

[c]//g/rect/@width[/c]

ungetestet, aber damit sollte es funktionieren.

Attribute werden über 
	
	
	
	





```
@[NAME]
```
 oder 
	
	
	
	





```
attribute::[NAME]
```
 angesprochen.


----------



## AMStyles (7. Feb 2012)

Vielen Dank erstmal!


```
XPathExpression expr = xpath.compile("//g/rect/@width");

    Object result = expr.evaluate(doc, XPathConstants.NODESET);
    NodeList nodes = (NodeList) result;
    for (int i = 0; i < nodes.getLength(); i++) 
    {
        System.out.println(nodes.item(i).getNodeValue()); 
    }
```

So hat das bei der XML Datei funktioniert.
Die bekomme ich den Wert width aus der SVG?

Im Object result steht leider beim Einlesen der SVG nicht viel.

Danke & Grüße,
AMStyles


----------

