PDA

Просмотр полной версии : Добавляются лишние неймспейсы в XML


Srednas
25.01.2013, 10:49
Здравствуйте.

Понадобилось вытащить информацию из SVG-файлов.
Но после обработки и сборки в каждый элемент записывается «xmlns="http://www.w3.org/2000/svg».
Подскажите, как от этого избавиться?

Первоначальное SVG-изображение:

<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Rect" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="100px" height="100px" xml:space="preserve">
<path id="rect" fill="#FF0000" d="M75,75H25V25h50V75z"/>
</svg>


Загружаю, затем собираю в массив элементов, для дальнейшей обработки:

_ns = new Namespace(svg.namespace());
default xml namespace = _ns;

pathes = svg.descendants("path");

for each (var path:XML in pathes){

id = path.@id;
fill = path.@fill;
stroke = path.@stroke;

_items[_items.length] = {id: id, fill: fill, stroke: stroke, path: path.toXMLString()};
// после path.toXMLString() в каждый path добавляется неймспейс
}

После некоторых манипуляций получается измененное SVG-изображение (в данном примере практически нет изменений):

<svg version="1.1" width="100px" height="100px" xml:space="preserve" proportionality="0.75" xmlns="http://www.w3.org/2000/svg">
<g id="rect" style="fill: #FF0000; stroke: #000000; stroke-width: 1;">
<path d="M75,75H25V25h50V75z" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</g>
</svg>

wvxvw
26.01.2013, 13:44
как-то не совсем понятно... toXMLString() не может ничего поменять в XML. Я так понимаю, что это результат объявления пространства имен глобальным. А если его не делать глобальным?
Да, еще если я правильно понял, попробуйте хмл который получается врезультате normalize(). Не факт, что что-то изменится, но, по-ходу, это пространство имен там просто лишнее, так же?