XPATH Befehl SVG Java

AMStyles

Mitglied
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.

Java:
    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
 
[c]//g/rect/@width[/c]

ungetestet, aber damit sollte es funktionieren.

Attribute werden über
Code:
@[NAME]
oder
Code:
attribute::[NAME]
angesprochen.
 
Vielen Dank erstmal!

Java:
    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
 

Zurück
Oben