Я пытаюсь добавить ящик для текста в текстовую метку в документе SVG. Процесс работает нормально, за исключением того, что шаг svg.createElement также создает запись в моем XML-файле, подобном этому xmlns=""
Как остановить атрибут xmlns от создания во время svg createElement шаг
Эта запись, кажется, заставляет мой 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 (нуль, «Прямоугольник»);
Я пытался выполнить шаг removeAttribute, но это не сработало (поскольку я не смог найти атрибут xmlns).
Я использую Apache Batik версии 1.8
Любая помощь будет оценена.
Привет, Майкл - ваш ответ сработал. Я изменил линию, как вы предложили, Элемент backBox = svg.createElementNS («http://www.w3.org/2000/svg», «rect»); и атрибут исчез из моего вывода, и не только это, но и исходная проблема, с которой я столкнулся с JSVGCanvas, не обновляющимся с моим обновленным Dom, теперь работает. Поэтому я очень счастлив. Большое спасибо за помощь. Я боролся с этим в течение нескольких дней. – robbie70