Java document to string

Java document to string

By Lokesh Gupta | Filed Under: XML

Java examples to read XML file and print XML string to console or write XML to file.

1) Convert XML to String

To convert XML object i.e org.w3c.dom.Document into string, you need following classes:

  • javax.xml.transform.Transformer : An instance of this class can transform a source tree into a result tree, using it’s transform() method.
  • javax.xml.transform.TransformerFactory : Factory to create Transformer instance.
  • javax.xml.transform.dom.DOMSource : Source tree in the form of a Document Object Model (DOM) tree.
  • javax.xml.transform.stream.StreamResult : An holder for a transformation result tree, which may be XML, plain Text, HTML, or some other form of markup.

1.1) Print XML to Console or Log File

1.2) Write XML to File

2) Read XML from File

Example to read XML from .xml file to Document object.

3) Complete Example

The complete code used to run the example.

Drop me your questions in comments section.

В этой статье мы познакомимся с простым способом преобразования строки в объект 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 .
Читайте также:  Panasonic kx ncp500ru инструкция

Напишем класс DocumentToStringConverter и реализуем этим методы:

Sometimes while programming in java, we get String which is actually an XML and to process it, we need to convert it to XML Document ( org.w3c.dom.Document ). Also for debugging purpose or to send to some other function, we might need to convert Document object to String.

Here I am providing two utility functions.

  1. Document convertStringToDocument(String xmlStr) : This method will take input as String and then convert it to DOM Document and return it. We will use InputSource and StringReader for this conversion.
  2. String convertDocumentToString(Document doc) : This method will take input as Document and convert it to String. We will use Transformer , StringWriter and StreamResult for this purpose.

When we run above program, we get the same String output that we used to create DOM Document.

You can use replaceAll("
|
", "") to remove new line characters from String and get it in compact format.

JAXB Example Tutorial

Java XML Parser

I love Open Source technologies and writing about my experience about them is my passion.

Comments

Can you provide me a example for “Document convertStringToDocument(String xmlStr)” I am currently working on one of the project where I need to convert string to xml format

Works great for me, thanks!

Above string am unable to parse it.Am getting below error.
[Fatal Error] :1:15: The value following “version” in the XML declaration must be a quoted string.

Thanks a lot for sharing this. :).

Why is this article still up and why is the author not responding to so many people saying it doesn’t work. The code does not work.

The code work fine, please check again. Let me know what is the issue you are facing.

Читайте также:  Атол недостаточно фактических параметров

The code does not work for me either. Even for the simplest string representing xml node, eg: “”.
Has anyone find out why, please?

why the doc value is null
then how we can get our xml data

Can you please specify the code you are talking about? If you are referring to “return null” in convertStringToDocument method, please note that it will be only in case of any exception.

Hi all,
i am also getting same error on parsing…Null pointer exception gets genearted..Any help is highly appreciaed

Please post your code and exception stack trace.

Where is the replaceAll() method supposed to be used?
I was thinking it should be placed on the string str before printing it out, like so:
String str = convertDocumentToString(doc);
str.replaceAll(“
|
”, “”);
System.out.println(str);

But the output doesn’t change…

Same problem it doesn’t work…!

return output.replaceAll("
|
", ""); in convertDocumentToString method. Come on guys, use some brains yourself too.

The variable doc allways return null

Please check the method carefully, that’s only in case of an exception.

successfully executed but did not found useful. I want convert doc file into xml

hi can u please tell me how to convert doc file into xml using java code

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;

import org.w3c.dom.Document;
public class DocToXmlResumeConvertor <

// get path of xsl file
private static String styleSheetPath = SystemManager.getInstance()
.getConfigUrl().getPath()
+ “xhtml2fo.xsl”;
// static String styleSheetPath = null;
static java.util.logging.Logger logger = Logger
.getLogger(DocToXmlResumeConvertor.class.getName());

private static Document xml2FO(Document xml, String styleSheetPath)
throws Exception
<
DOMSource xmlDomSource = new DOMSource(xml);
DOMResult domResult = new DOMResult();
Transformer transformer = getTransformer(styleSheetPath);
if (transformer == null)
<
throw new Exception(“Error in creating trnasformer”);
>

try
<
transformer.transform(xmlDomSource, domResult);
>
catch (javax.xml.transform.TransformerException e)
<
logger.log(Level.INFO, “Error in transforming xml to xsl-fo: ”
+ e.getMessage());
return null;
>

Читайте также:  Php остаток от деления

return (Document) domResult.getNode();
>

private static Transformer getTransformer(String styleSheetPath)
<
try
<
TransformerFactory tFactory = TransformerFactory.newInstance();
DocumentBuilderFactory dFactory = DocumentBuilderFactory
.newInstance();
dFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
Document xslDoc = dBuilder.parse(new File(styleSheetPath));
logger.log(Level.INFO, xslDoc.getTextContent());
DOMSource xslDomSource = new DOMSource(xslDoc);
return tFactory.newTransformer(xslDomSource);
>
catch (javax.xml.transform.TransformerException e)
<
logger.log(Level.SEVERE, “”, e);
return null;
>
catch (java.io.IOException e)
<
logger.log(Level.SEVERE, “”, e);
return null;
>
catch (javax.xml.parsers.ParserConfigurationException e)
<
logger.log(Level.SEVERE, “”, e);
return null;
>
catch (org.xml.sax.SAXException e)
<
logger.log(Level.SEVERE, “”, e);
return null;
>
>

/*
private static byte[] fo2PDF(Document foDocument)
<
FopFactory fopFactory = FopFactory.newInstance();
try
<

ByteArrayOutputStream out = new ByteArrayOutputStream();
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
Source src = new DOMSource(foDocument);
Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(src, res);
return out.toByteArray();
>
catch (Exception ex)
<
logger.log(Level.SEVERE, “”, ex);
return null;
>
>
*/

public static byte[] getXmlResumeBytes(byte[] bytes) throws Exception
<
byte[] XmlBytes = null;
ByteArrayInputStream input = new ByteArrayInputStream(bytes);
//final HtmlCleaner cleaner = new HtmlCleaner();
CleanerProperties props = cleaner.getProperties();
DomSerializer doms = new DomSerializer(props, true);
Document xmlDoc = null;

try
<
TagNode node = cleaner.clean(input, “UTF-8”);
xmlDoc = doms.createDOM(node);
// System.out.println(xmlDoc.getFirstChild().getTextContent());
>
catch (Exception e)
<
throw e;
>
Document foDoc = null;
try
<
foDoc = xml2FO(xmlDoc, styleSheetPath);
// System.out.println(foDoc.getFirstChild().getTextContent());
>
catch (Exception e)
<
logger.log(Level.INFO, “ERROR: ” + e.getMessage());
throw e;
>
//XmlBytes = fo2PDF(foDoc);
input.close();
if (XmlBytes != null)
<
logger.log(Level.INFO, “your doc has been converted into xml”);
>
else
<
String errorString = “doc File is not converted into xml properly”;
XmlBytes = errorString.getBytes();
>
return XmlBytes;
>

public static byte[] readBytes(String fileName)
<

FileInputStream fileInputStream = null;
byte[] bytes = null;
try
<
File file = new File(fileName);
System.out.println(fileName);
bytes = new byte[(int) file.length()];
fileInputStream = new FileInputStream(file);
fileInputStream.read(bytes);
fileInputStream.close();
return bytes;

>
catch (Exception ie)
<
bytes = null;
logger.log(Level.SEVERE, “”, ie);
return bytes;
>
>

public static void main(String[] args) <
// TODO Auto-generated method stub

Ссылка на основную публикацию
Insomnia the ark цена свободы
Очередь просмотра Очередь Удалить все Отключить YouTube Premium Хотите сохраните это видео? Пожаловаться Пожаловаться на видео? Выполните вход, чтобы сообщить...
High speed hdmi cable with ethernet
Приветствую всех посетителей блога о компьютерах. Сегодня бы очень хотелось поведать читателям о так называемом HDMI кабеле, с помощью которого...
Highscreen pure j 4pda прошивка
Внимание! Использование инструментов для перепрошивки неопытными пользователями может привести к выходу аппарата из строя. Установка этого обновления приведет к полному...
Instagram как выложить фото с компьютера
Зачем нужно выкладывать фото и видео в Инстаграм через компьютер? Инстаграм придумали, чтобы можно было быстро загрузить фото с телефона....
Adblock detector