как преобразовать объект документа dom4j в строку

#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?