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/ |