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

Просто пытаюсь найти способ преобразовать содержимое документа Dom4J в строку. Он имеет API asXML(), который преобразует содержимое в XML. В моем случае я редактирую структуру DOM, отличную от xml, с помощью Dom4J и пытаюсь преобразовать содержимое в строку. Я знаю, что это возможно в случае документа w3c.

Любые указатели будут оценены.

Спасибо


person Shamik    schedule 07.04.2011    source источник
comment
Вы решили? Почему asXml() у вас не работает? Я не понимаю, что вам нужно, не могли бы вы уточнить свой вопрос, пожалуйста?   -  person javanna    schedule 11.04.2011


Ответы (3)


asXml() возвращает строку из объекта документа

String text = document.asXML()
person James    schedule 22.07.2016

Почему вы не можете просто сделать:

String result = dom.toXML().toString();

Если вы хотите сделать это длинным путем, вы можете использовать TransformerFactory для преобразования DOM во что угодно. Первое, что вы делаете, это заключаете документ в DOMSource.

DOMSource domSource = new DOMSource(document);

Подготовьте StringWriter, чтобы мы могли направить поток в String:

StringWriter writer = new StringWriter();
StreamResult streamResult = new StreamResult(writer);

Подготовьте TransformationFactory, чтобы вы могли преобразовать DOM в предоставленный источник:

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory .newTransformer();
transformer.transform(domSource, streamResult);

Наконец, вы получите String:

String result = writer.toString();

Надеюсь, это помогло!

person Mohamed Mansour    schedule 07.04.2011
comment
Он заявил, что хочет не-XML, хотя и не уточнил, каким на самом деле был желаемый формат. Ваше решение создает XML. - person Alan Krueger; 19.10.2011

Как у вас может быть дом без XML,

Dom по сути представляет собой XML-документ,

asXml() возвращает строковое представление Dom, которое представляет собой XML,

если вам нужно вытащить только текстовые значения, вы можете перебирать dom и getValue() для элементов, но то, что вы просите, похоже, является строкой xml,

person Theresa Forster    schedule 25.11.2011
comment
может быть, потому что вы используете SAX? - person Enerccio; 10.10.2018