Почему XMLStreamReader/StAXSource удаляет комментарии из XML?
Код ниже (на основе примера кода с http://jax-ws.java.net/nonav/jax-ws-20-fcs/arch/com/sun/xml/ws/util/xml/StAXSource.html)
String xml = "<a><b>a text</b><!--a comment--><b/></a>";
StringReader sr = new StringReader(xml);
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(sr);
Source source = new StAXSource(reader);
//Source source = new StreamSource(sr);
Result result = new StreamResult(System.out);
TransformerFactory.newInstance().newTransformer().transform(source, result);
дает следующий результат:
<?xml version="1.0" encoding="UTF-8"?><a><b>a text</b><b/></a>
т.е. он удаляет комментарий xml. Если я заменим StAXSource/XMLStreamReader на StreamSource, комментарий будет сохранен.
Кто-нибудь знает, почему комбинация XMLStreamReader/StAXSource удаляет их и есть ли способ предотвратить это? Тестирование проводилось в средах 1.6 и 1.7 без сторонних jar-файлов, поэтому XMLStreamReader становится
com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl
Спасибо
1 ответ
РЕДАКТИРОВАТЬ: Просто попробовал, как описано здесь, т.е.
case XMLStreamConstants.COMMENT:
System.out.print("<!--");
if (xmlr.hasText())
System.out.print(xmlr.getText());
...
и он читает комментарии. Это еще не отвечает на первоначальный вопрос...