Я использую класс Java Трансформатор для обработки объекта XML-документа.
Это код, который создает Трансформатор:
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "no");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(source, result);
В настоящее время мой вывод выглядит так: <svg ... />. Я бы хотел, чтобы он включал пространство имен каждого элемента, как в <svg: svg ... />
Как я могу это сделать ?




В описании пакета для javax.xml.transform есть раздел Полное представление имени, который, кажется, подразумевает, что можно получить пространство имен, представленное как на входе, так и на выходе.
Мне не совсем понятно, как будет выглядеть результат, кроме как будет включен URI пространства имен.
Попробуйте - надеюсь, у кого-то еще будет более конкретный опыт.
Обратите внимание, что <svg xmlns = "SVGNS" /> - это то же самое, что и <svg:svg xmlns:svg = "SVGNS" />.
Вы проверяли, что вызываете setNamespaceAware(true) на своем экземпляре DocumentBuilderFactory?
Я обнаружил, что вам нужно наложить его на себя в качестве префикса, даже не использовать пространства имен.
Я использовал, например, el.setAttribute («xmi: type», type), а не el.setAttributeNS («xsi», «type», type); или el.setAttributeNS («http: //www...../URI», «тип», тип); Я обнаружил, что метод NS делает не совсем то, что вы делаете. Кроме того, он по-прежнему будет отображать его xmlns = "..." вместо использования префикса.
[ответ на установку пространств имен прямо здесь, в stackoverflow] [1] [1]: stackoverflow.com/questions/10584670/…