org.dom4j.DocumentException: Error on line 1 of document : 前言中不允许有内容。

目录

1.错误信息

2.错误原因

3.bug复现

4.解决方案


1.错误信息

org.dom4j.DocumentException: Error on line 1 of document  : 前言中不允许有内容。 Nested exception: 前言中不允许有内容。

org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in prolog. Nested exception: Content is not allowed in prolog. at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:278)

2.错误原因

string转document的时候没有报文头,就是下面这玩意。

        

3.bug复现

        有一个对象需要转成document格式,我就这样直接转了,但这样直接转没有报文头,然后就有了上面的报错信息。 

String xml = JSONUtil.toJsonStr(Object)
Document document =DocumentHelper.parseText(xml);

4.解决方案

  网上找了一个工具类,这个工具类可以将object转成string并加上请求头,然后就解决了。

String xml = Java2XmlUtil.javaBeanToXml(object);
Document document =DocumentHelper.parseText(xml);

  Java2XmlUtil

import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import lombok.extern.slf4j.Slf4j;
import java.util.Objects;

@Slf4j
public class Java2XmlUtil {
    //XML文件头
    private static final String XML_HEAD = "\n";

    public static String javaBeanToXml(Object obj) {
        String xml = "";
        if (Objects.isNull(obj)) {
            return xml;
        }
        try {
            XmlMapper xmlMapper = new XmlMapper();
            xml = xmlMapper.writeValueAsString(obj);
        } catch (Exception e) {
            log.error("javaBeanToXml error, obj={}, xml={}", obj, xml, e);
            return "";
        }
        // 添加xml文件头
        return XML_HEAD + xml;
    }
}

你可能感兴趣的:(日常bug,java,开发语言,spring,bug)