Trang chủHướng dẫnHướng dẫn chuyển đổi chuỗi thành XML trong Java
Java

Hướng dẫn chuyển đổi chuỗi thành XML trong Java

CyStack blog 2 phút để đọc
CyStack blog19/08/2025
Locker Avatar

Bao Tran

Web Developer

Locker logo social
Reading Time: 2 minutes

Đôi khi khi lập trình bằng Java, chúng ta nhận được một chuỗi (String) thực chất là một XML và để xử lý nó, chúng ta cần chuyển đổi nó sang XML Document (org.w3c.dom.Document). Ngoài ra, với mục đích debug hoặc gửi đến một hàm khác, chúng ta có thể cần chuyển đổi đối tượng Document sang String.

Bài viết này sẽ hướng dẫn bạn cách chuyển đổi chuỗi thành XML và XML sang chuỗi trong Java.

chuyển đổi chuỗi thành XML

Chuyển đổi chuỗi thành XML

Dưới đây tôi đề cập đến hai hàm tiện ích.

  1. Document convertStringToDocument(String xmlStr): Phương thức này sẽ nhận đầu vào là String và sau đó chuyển đổi nó sang DOM Document và trả về. Chúng ta sẽ sử dụng InputSource và StringReader cho việc chuyển đổi này.
  2. String convertDocumentToString(Document doc): Phương thức này sẽ nhận đầu vào là Document và chuyển đổi nó sang String. Chúng ta sẽ sử dụng Transformer, StringWriter và StreamResult cho việc chuyển đổi này.
package com.journaldev.xml;

import java.io.StringReader;
import java.io.StringWriter;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;

public class StringToDocumentToString {

    public static void main(String[] args) {
        final String xmlStr = "<?xml version=\\"1.0\\" encoding=\\"UTF-8\\" standalone=\\"yes\\"?>\\n"+
                                "<Emp id=\\"1\\"><name>Pankaj</name><age>25</age>\\n"+
                                "<role>Developer</role><gen>Male</gen></Emp>";
        Document doc = convertStringToDocument(xmlStr);

        String str = convertDocumentToString(doc);
        System.out.println(str);
    }

    private static String convertDocumentToString(Document doc) {
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer;
        try {
            transformer = tf.newTransformer();
            // below code to remove XML declaration
            // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
            StringWriter writer = new StringWriter();
            transformer.transform(new DOMSource(doc), new StreamResult(writer));
            String output = writer.getBuffer().toString();
            return output;
        } catch (TransformerException e) {
            e.printStackTrace();
        }

        return null;
    }

    private static Document convertStringToDocument(String xmlStr) {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder;
        try
        {
            builder = factory.newDocumentBuilder();
            Document doc = builder.parse( new InputSource( new StringReader( xmlStr ) ) );
            return doc;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

Khi chúng ta chạy chương trình trên, chúng ta sẽ nhận được cùng một đầu ra String mà chúng ta đã sử dụng để tạo DOM Document.

<?xml version="1.0" encoding="UTF-8"?><Emp id="1"><name>Pankaj</name><age>25</age>
<role>Developer</role><gen>Male</gen></Emp>

Bạn có thể sử dụng replaceAll("\\n|\\r", "") để loại bỏ các ký tự xuống dòng khỏi String và đưa nó về định dạng nhỏ gọn.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất