| forum.bitel.ru http://forum.bitel.ru/ |
|
| xml в String http://forum.bitel.ru/viewtopic.php?f=19&t=10942 |
Страница 1 из 1 |
| Автор: | Jimson [ 29 сен 2015, 19:06 ] |
| Заголовок сообщения: | xml в String |
Требуется в коде активатора сервиса преобразовать xml в строку. Погуглил. Самый распространенный вариант типа такого: Код: import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.StringWriter; Transformer docTransformer = TransformerFactory.newInstance().newTransformer(); StreamResult actionSR = new StreamResult(new StringWriter()); DOMSource actionDOM = new DOMSource(action); docTransformer.transform(actionDOM, actionSR); String actionData = actionSR.getWriter().toString(); в результате получаем такую беду: Код: mq 09-29/14:58:03 ERROR [inet-reload] InetDeviceRuntime - org/apache/xml/serializer/TreeWalker java.lang.NoClassDefFoundError: org/apache/xml/serializer/TreeWalker at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:823) at ru.steccom.bgbilling.modules.inet.dyn.device.nbi.NBIServiceActivator.init(NBIServiceActivator.java:51) at ru.bitel.bgbilling.modules.inet.runtime.device.InetDeviceRuntime.reloadScripts(InetDeviceRuntime.java:349) at ru.bitel.bgbilling.modules.inet.runtime.device.InetDeviceRuntime.<init>(InetDeviceRuntime.java:232) ... Это javax.xml.transform.* требует апачевый serializer? Это как то связанно с тем что mq работает под java 1.7? Если тащить дополнительные библиотеки не хочется, то как конвертировать dom document в строку, через DOMImplementationLS или есть еще варианты? |
|
| Автор: | Amir [ 29 сен 2015, 20:09 ] |
| Заголовок сообщения: | Re: xml в String |
action - это объект какого класса? Попробуйте Код: import java.io.StringWriter;
import ru.bitel.common.XMLUtils; StringWriter sw = new StringWriter(); XMLUtils.serialize( doc, sw, "UTF-8" ); log.debug( sw.toString() ); |
|
| Автор: | Amir [ 29 сен 2015, 20:13 ] |
| Заголовок сообщения: | Re: xml в String |
А, скорее всего будет тоже самое. Похоже т.к. там есть библиотека xalan - она прописывает себя обработчиком xml, но этой библиотеке для сериализации не хватает еще одной jar. Попробуйте скопировать serializer.jar из BGBillingServer/lib/ext в InetAccess/lib/ext и перезапустить InetAccess. |
|
| Автор: | Jimson [ 29 сен 2015, 23:05 ] |
| Заголовок сообщения: | Re: xml в String |
action это org.w3c.dom.Element Переписал конвертацию через DOMImplementationLS, ругаться при загрузке класса (?) перестало, но вылезли проблемы в другом месте: SOAPMessage.saveChanges() дает исключение "не возможно сохранить multipart message" и потом примерно такое же исключение про org.apache.xml.serializer.TreeWalker. Я так понимаю в недрах SOAP* тааже TransformerFactory используется. Положил serializer.jar (скопировал из client.lib/) и все заработало, теперь думаю возвращать обратно конвертацию через TransformerFactory или оставить DOMImplementationLS P.S. интересно, конечно, узнать почему код из стандартных библиотек jdk вдруг требует апачевую библиотеку, если это последствия xalan, то может добавите тогда этот serializer.jar в Access? up. Переехал на jdk 1.8.0.60 и mq 5.12, mq тоже на java 1.8 запустил, пока проблем не видно. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
| Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |
|