XMLEventWriter с нуля: как мне выдать атрибут xmlns? - PullRequest
2 голосов
/ 25 июня 2010

Я пытаюсь написать XML-документ с нуля, используя XMLEventWriter из API StAX.

Я не могу понять, как получить атрибут пространства имен по умолчанию для отправки.

Например, строка URI пространства имен по умолчанию - "http://www.liquibase.org/xml/ns/dbchangelog/1.9".. Я хочу, чтобы она присутствовала в моем корневом элементе XML как xmlns =" ​​http://www.liquibase.org/xml/ns/dbchangelog/1.9".

Какой магический рецепт здесь? XMLEventWriter.setDefaultNamespace () не работает.

Спасибо, Laird

Ответы [ 2 ]

2 голосов
/ 26 июня 2010

Используйте свойство IS_REPAIRING_NAMESPACES , чтобы установить это поведение:

XMLEventFactory events = XMLEventFactory.newInstance();
QName bar = new QName("urn:bar", "bar");
XMLOutputFactory factory = XMLOutputFactory.newInstance();
factory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
XMLEventWriter writer = factory.createXMLEventWriter(System.out);
writer.add(events.createStartDocument());
writer.setDefaultNamespace("urn:bar");
writer.add(events.createStartElement(bar, null, null));
writer.add(events.createEndDocument());
writer.flush();

Код выше:

<?xml version="1.0"?><bar xmlns="urn:bar"></bar>
0 голосов
/ 30 июня 2010

Используйте «запись *» вместо «set *»

javax.xml.stream.XMLStreamWriter.writeDefaultNamespace(String)
...