当前位置: 首页 > 面试题库 >

JAXB马歇尔缩进

巴宏恺
2023-03-14
问题内容

我正在使用JAXB marshaller创建和格式化我的.xml文件。除了一个地方,它运作良好。缩进缺少两个地方:

                <Elem1>
                    <Elem2>
                        <Elem3 ID="Elem3.INFO">
<Elem4>INFO</Elem4>
                        </Elem3>
                        <Elem2>
                            <Elem3 ID="Elem3.TEMPLATE">
<Elem4>TEMPLATE</Elem4>
                            </Elem3>
                        </Elem2>
                        <Elem2>
                            <Elem3 ID="Elem3.LEVEL">
<Elem4>LEVEL</Elem4>
                            </Elem3>
                        </Elem2>
                    </Elem2>
                </Elem1>

.xml文件的其余部分看起来不错。我正在使用这种方法来美化整个代码:

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

不幸的是,它不适用于这两个元素。有任何想法吗?


问题答案:

可以通过将javax Transformer应用于输出来解决此烦人的问题。

import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.StreamResult;

Object jaxbElement = // The object you want to marshall using jaxb.

JAXBContext context = JAXBContext.newInstance(jaxbElement.getClass());
Marshaller marshaller = context.createMarshaller();
OutputStream out = // Here your destination, FileOutStream, ByteOutStream etc
DOMResult domResult = new DOMResult();
marshaller.marshal(jaxbElement, domResult);

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.transform(new DOMSource(domResult.getNode()), new StreamResult(out));


 类似资料:
  • 我使用JAXB(MoXY)对XML和JSON中的数据进行编组/解编。 我有一个

  • 我的应用程序需要在Java和XML之间转换数据。 在转换数据时,我需要区分该值是否存在,该值是否显式设置为null,或者该值是否有值。 XML示例: 由于像“String”这样的Java类型只知道两种状态(null或notnull),所以我尝试使用Java选项来解决这个问题。 XML和Java选项之间的映射可以如下所示: 我尝试使用JAXB进行编组和解组。其思想是,只有当一个值需要显式地设置为一个

  • 我有一个从org.springframework.security.core.userdetails.user扩展而来的bean,并将这个bean与openid一起使用。bean看起来像: 控制器将Employee的实例接受为: @RequestMapping(值=“/addemp.do”,方法=RequestMethod.Post)public@ResponseBody String addEm

  • 1. 马尔科夫链概述 马尔科夫链定义本身比较简单,它假设某一时刻状态转移的概率只依赖于它的前一个状态。举个形象的比喻,假如每天的天气是一个状态的话,那个今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任何关系。当然这么说可能有些武断,但是这样做可以大大简化模型的复杂度,因此马尔科夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络RNN,隐式马尔科夫模型HMM等,当然MCMC也需要它。 如

  • 我正在尝试在Java写单元测试。下面是我的代码片段 类Temp{public void method(){ 测试方法: 然而,在执行测试用例时,我得到以下错误: 如果我的理解是正确的,它期望传递的所有参数都被嘲弄。但这不是我想要的,我希望模拟前4个参数,并根据5个参数(true或false),然后指定方法的适当返回值。 有办法绕过这件事吗? 谢谢