StAX экранирование больше чем (>) - PullRequest
2 голосов
/ 18 января 2012

Я использую StAX Streaming Api в версии 1.2.0 из http://stax.codehaus.org/. Когда я пытаюсь записать следующий XML-файл в файл, больше чем char не экранируется. Однако меньше, чем кажется, нет проблемы с побегом.

out = new FileOutputStream("foo.xml");
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = factory.createXMLStreamWriter(out);
writer.writeStartDocument();
writer.writeStartElement("foo");
writer.writeAttribute("test", "<foo>");
writer.writeEndElement();
writer.writeEndDocument();
writer.flush();
writer.close();
out.close();

Вывод (только релевантный) такой:

<foo test="&lt;foo>"

Я также пытался использовать метод writeCharacters - с тем же результатом. Это ошибка или намерение? Есть ли обходной путь? (Замена> вручную на

replaceAll(">", "&gt;");

приводит к тому, что '&' сбегает само.

Спасибо за любую помощь заранее.

1 Ответ

7 голосов
/ 18 января 2012

По сути, это потому, что вам не нужно , чтобы сбежать >.Это уже делает правильные вещи.

...