Как преобразовать строку в XML Document. Создаем String из Document
В этой статье мы познакомимся с простым способом преобразования строки в объект XML Document и обратной конвертации XML Document в строку. А также разберем зачем это нужно.
Из String в XML Document и наоборот
Программируя на Java часто приходится иметь дело со строками, которые содержат в себе XML разметку. Такие объекты нужно как-то обрабатывать. Для этого нам нужно преобразовать (конвертировать) такую строку c XML в объект Document ( org.w3c.dom.Document ). Похожая задача конвертации стоит во время отладки, когда нам потребуется преобразовать XML Document в объект String.
В этой статье мы разбирались как сделать красивый и читабельный вывод неотформатированной строки с XML разметкой. В этой статье нас больше интересует правильный способ преобразования между String и объектом Document.
Конвертация в String из XML Document и наоборот на примере
Напишем 2 метода для конвертации и обратного преобразования XML и String:
- Метод stringToDocument(String xmlString) принимает на вход строку из XML разметкой, а затем парсит ее и возвращает в виде Document DOM. Мы будем использовать InputSource и StringReader для этого.
- Метод documentToString(Document document) принимает на вход Document и преобразовывает его в объект String. Для этого используются классы Transformer , StringWriter и StreamResult пакета javax.xml.transform .
Напишем класс DocumentToStringConverter и реализуем этим методы:
Источник
Android document to string
CTAPbIuMABP |
| ||
Шустрый Профиль Репутация: нет Как оказалось из android sdk выкинули пакет javax.xml.transform и теперь преобразовать Node в String нормальным способом нельзя. под нормальным способом я подразумеваю нечто вроде
попытка перетачить пакет javax.xml.transform к себе в приложение вызвала недовольство со стороны компилятора гугл предлагает использовать StringBuilder но это не вариант есть какие-то идеи?! | |||
|
CTAPbIuMABP |
| ||
Шустрый Профиль Репутация: нет вот ошибка которая вылазит когда переносишь пакет к себе
заодно выискалось решение с XmlSerializer но оно ИМХО мало чем отличается от StringBuilder Приветствуются любые варианты решения проблемы, от перетаскивания пакета до собственного плохотестированого класса. | |||
|
CTAPbIuMABP |
| ||
Шустрый Профиль Репутация: нет буду тут коллекционировать неработающие методы
Это сообщение отредактировал(а) CTAPbIuMABP — 9.9.2009, 00:21 | |||
|
CTAPbIuMABP |
| ||
Шустрый Профиль Репутация: нет к черту все, написал свой, не универсально конечно но может кому понадобится
StringBuilder result = new StringBuilder(); if(root.getNodeType() == 3) NodeList nodes = root.getChildNodes(); |
появится javax.xml.transform можно будет переписать всего один метод 😉
W0LF |
| ||
alexander lonsky Профиль Репутация: 19 | |||
|
CTAPbIuMABP |
| |||
Шустрый Профиль Репутация: нет я ж вчера вроде не пил, мысль излагал ровно. есть дом дерево созданое вот таким образом
в результату этот объект Document надо превратить в стоку для этого в J2EE есть пакет javax.xml.transform , который работает способом показаным в первом посте в Android SDK этого пакета нет. а то что процесит дерево в аутпут типа
выглядит примерно как [#document: null] | ||||
|
hunterman |
| ||
Профиль Репутация: нет подыму эту тему выше с уточнением что атрибуты у нодов не идут в исходящую строку, вот дописал, т.к. пишу под sdk 1.5 и там данная проблема еще актуальна то может кому то еще понадобиться.
StringBuilder result = new StringBuilder(); if (root.getNodeType() == 3) NodeList nodes = root.getChildNodes(); |
Это сообщение отредактировал(а) hunterman — 28.1.2010, 15:19
ivanovpv |
| |||||||
Варвар Профиль Репутация: 10
|