在不知道类的情况下将XML转换为对象回到XML

时间:2018-04-11 17:27:08

标签: java jaxb

我正在解析可能是任何内容的未知XML字符串。

我尝试了以下代码

            String XMLString = "<?xml version='1.0' encoding='UTF-8'?><dataset><height>true</height></dataset>";


            Object xmlObj = JAXB.unmarshal(new StringReader(XMLString), Object.class);

            StringWriter sw = new StringWriter();
            JAXB.marshal(xmlObj, sw);
            String xmlString = sw.toString();

            System.out.println(xmlString);

然而打印出来

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<elementNSImpl>
    <textContent>true</textContent>
</elementNSImpl>

如何维护原始节点名称?

1 个答案:

答案 0 :(得分:1)

我想你已经没事了?&#34;一个DOM元素。

要使用JAXB解组某些内容,您需要为某组类创建JAXBContext。您可以直接枚举它们或使用上下文路径(一个或多个包名称)枚举它们,但您必须提供此功能。否则JAXB不知道要解组什么。

如果您对解组的内容完全一致,那么JAXB可能是一个糟糕的选择。您可以改为解析DOM。 JAXB是关于将XML映射到Java类的实例。为此,您必须让JAXB知道要考虑哪些类。