Я пытаюсь добавить резервную копию к текстовой метке в документе SVG. Процесс работает нормально, за исключением того, что шаг svg.createElement также создает запись в моем XML-файле, подобную этой xmlns=""
Эта запись, по-видимому, приводит к тому, что мой файл SVG (XML) неправильно отображается на моем холсте JSVG. Если я вручную отредактирую файл и удалю эту запись, XML будет отображаться правильно.
Мой фрагмент кода показан ниже.
if(domElement instanceof SVGOMTextElement) {
SVGOMTextElement text = (SVGOMTextElement) domElement;
NodeList tspans = text.getElementsByTagName("tspan");
for(int i = 0; i < tspans.getLength(); i++){
Node node = tspans.item(i);
SVGOMTSpanElement tspan = (SVGOMTSpanElement) node;
Element backBox = svg.createElementNS(null,"rect");
backBox.setAttributeNS(null,"id", "backingRect-attx" + String.valueOf(Math.round(tspan.getExtentOfChar(0).getX())) + "atty" + String.valueOf(Math.round(tspan.getExtentOfChar(0).getY())));
backBox.setAttributeNS(null,"width", String.valueOf(tspan.getComputedTextLength()));
backBox.setAttributeNS(null,"height", String.valueOf(tspan.getExtentOfChar(0).getHeight()));
backBox.setAttributeNS(null,"style", "fill:green;fill-opacity:0.5");
backBox.setIdAttributeNS(null,"id", Boolean.TRUE);
text.getParentNode().insertBefore(backBox, text);
}
Тег XML, создаваемый этим кодом, показан ниже.
<rect xmlns="" width="59.89038" style="fill:yellow;fill-opacity:0.5"
id="backingRect-attx407atty427" height="16.734436"/>
Итак, вопрос в том, как я могу остановить добавление этого атрибута (xmlns=""
) в мой выходной файл SVG XML?
Я пытался выполнить отладку кода, но не вижу атрибута "xmlns", созданного после строки,
Элемент backBox = svg.createElementNS(null,"rect");
Я пытался выполнить шаг removeAttribute, но это не сработало (поскольку я не смог найти атрибут xmlns).
Я использую Apache Batik версии 1.8.
Любая помощь приветствуется.