使JAXB生成XML处理指令

问题描述

这里的所有解决方案都非常丑陋和冗长。只需在Mashaller对象内部设置一行即可指定其他标题。

Marshaller jaxbMarshaller = ...
jaxbMarshaller.setProperty("com.sun.xml.bind.xmlHeaders", 
    "<?xml-stylesheet type='text/xsl' href='nameoffile.xsl' ?>");

本示例将使用样式表将XML对象输出到文件,并很好地格式化元素以供人类阅读。该对象myXmlObject属于类MyXmlClass,并将被写入file,并由给出的样式表设置格式xslUrl

JAXBContext context = JAXBContext.newInstance(MyXmlClass.class);
Marshaller marshaller = context.createMarshaller();
//Need to use a Writer to marshal with the XSL
FileWriter fw = new FileWriter(file);
//Do this or else the XML is all one line and not human friendly...
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders",
        "<?xml-stylesheet type='text/xsl' href=\"" +
        xslUrl +
        "\" ?>");
marshaller.marshal(myXmlObject, fw);

更新资料

在最新版本的JAXB中,我们需要使用属性键,com.sun.xml.internal.bind.xmlHeaders如下所示。

Marshaller jaxbMarshaller = ...
jaxbMarshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders", 
    "<?xml-stylesheet type='text/xsl' href='nameoffile.xsl' ?>");

解决方法

我正在使用JAXB动态生成XML。

现在,我想使用XSL将其转换为HTML。我该如何包括

<?xml-stylesheet type="text/xsl" href=""> 

在动态生成的XML中?

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...