Я просто пытаюсь обновить атрибут «видимость» пары элементов в моей строке SVG с помощью Apache Batiq, но я получаю исключения NullPointerExceptions при попытке сделать это.
Я использую SVGDocument от Batiq и получаю SVGOMElements, которые мне нужно обновить.Я попытался обновить Element.getStyle (), который возвращает null, поэтому прибегнул к SVGOMElement.updateAttributeValue (), который также генерирует исключение NullPointerException из-за того, что я не передаю AnimatableValue (зачем это вообще нужно?)
Вот моя строка SVG:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="product-svg" version="1.1" x="0.0" y="0.0" xml:space="preserve" viewBox="0.0 0.0 792.0 936.0">
<rect id="product-bounds" x="0.0" y="0.0" width="792.0" height="936.0" fill="#d20c0c" visibility="hidden"></rect>
<g id="shadow-elements">
<rect x="108.0" y="108.0" width="576.0" height="720.0" fill="#FFFFFF" style="filter:url(#d-shadow)"></rect>
</g>
</svg>
А вот моя попытка скрыть «границы продукта» и «элементы-тени»:
StringReader reader = new StringReader(svg);
try {
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);
SVGDocument doc = f.createSVGDocument("/",reader);
SVGOMRectElement bounds = (SVGOMRectElement) doc.getElementById("product-bounds");
bounds.updateAttributeValue("visibility", "visible", null);
SVGOMGElement shadows = (SVGOMGElement) doc.getElementById("shadow-elements");
shadows.updateAttributeValue("visibility", "hidden", null);
return doc.toString();
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
} finally {
reader.close();
}
Я такжепопытался обновить bounds.getStyle (), но безуспешно, поскольку он отображается как ноль.
Я ожидаю, что doc.toString () вернет вышеуказанный SVG с видимостью границ продукта, установленной в visible, и shadow-элементы должны быть установлены как «скрытые», но вместо этого я получаю исключение NullPointerException:
java.lang.NullPointerException в org.apache.batik.anim.dom.SVGOMElement.updateAttributeValue (SVGOMElement.java:702)