#java #dom #dom4j
#java #dom #dom4j
Вопрос:
Просто пытаюсь найти способ преобразовать содержимое документа Dom4J в строку. У него есть asXML() API, который преобразует содержимое в XML. В моем случае я редактирую структуру DOM, отличную от xml, с помощью Dom4J и пытаюсь преобразовать содержимое в строку. Я знаю, что это возможно в случае документа w3c.
Любые указания будут оценены.
Спасибо
Комментарии:
1. Вы решили? Почему
asXml()
у вас не работает? Я не понимаю, что вам нужно, не могли бы вы уточнить свой вопрос, пожалуйста?
Ответ №1:
asXml() возвращает строку из объекта Document
String text = document.asXML()
Ответ №2:
Почему вы не можете просто сделать:
String result = dom.toXML().toString();
Если вы хотите сделать это длинным путем, то вы используете TransformerFactory для преобразования DOM во что угодно, что вы хотите. Первое, что вы делаете, это помещаете свой документ в DOMSource
DOMSource domSource = new DOMSource(document);
Подготовьте StringWriter, чтобы мы могли перенаправить поток в строку:
StringWriter writer = new StringWriter();
StreamResult streamResult = new StreamResult(writer);
Подготовьте TransformationFactory, чтобы вы могли преобразовать DOM в предоставленный исходный код:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory .newTransformer();
transformer.transform(domSource, streamResult);
Наконец, вы получаете строку:
String result = writer.toString();
Надеюсь, это помогло!
Комментарии:
1. Он заявил, что хочет не XML, хотя и не уточнил, каким на самом деле был желаемый формат. Ваше решение создает XML.
Ответ №3:
Как у вас может быть dom, отличный от XML,
Dom — это, по сути, XML-документ,
asXml() возвращает строковое представление Dom, которое является XML,
если вам нужно извлечь только текстовые значения, вы можете выполнить итерацию через dom и GetValue() для элементов, но то, что вы запрашиваете, похоже, является строкой xml,
Комментарии:
1. может быть, потому, что вы используете SAX?