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

使JAXB生成XML处理指令

凌嘉志
2023-03-14
问题内容

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

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

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

在动态生成的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' ?>");


 类似资料:
  • Section Contents 前言 揭示XML文档 结点树 将XML放到数据模型中 必要的XML处理 基本内容 具体细节 声明的XML处理 基本内容 具体细节

  • 问题内容: 我目前正在使用JAXB替换旧系统,并且在解析XML时遇到问题。系统的首要要求是它必须是即插即用的替代品,因此我不能修改XML的格式。以下是给我麻烦的XML部分。 XML的问题在于,所有s#对象都是完全相同的,最多可以包含256个。JAXB中是否可以注释此类标记,还是必须创建256个单独的注释?非常感激任何的帮助。 这是xx对象的Java代码。注意:最初对对象进行编程时要理解只有2个s#

  • 问题内容: 我正在编组(序列化)JAXB bean以输出流。如何向输出添加DOCTYPE声明和xml处理指令? 我目前正在这样编组: 我想要的输出看起来像这样: JAXB bean是生成的代码,因此我不想更改它们。 有一些技巧和未记录的技巧(请参阅使JAXB生成XML处理指令)来添加xml处理指令和doctype。但是,执行此操作的首选或正确方法是什么? 问题答案: JAXB RI具有专有属性(请

  • 问题内容: 我使用JAXB创建文件夹和文件层次结构 我的模特: 我想制作目录和文件树: 但是我在生成的xml中有一个奇怪的“ xsi:type”和“ xmlns:xsi”: 所以我的问题是:这是什么意思,如何删除? 问题答案: 在您的类中,您没有指定集合的​​类型,这就是JAXB添加属性的原因。 你有: 如果您要包含的实例,则可以执行以下操作: 如果由于某种原因您不想在集合中指定类型,则可以在批注

  • 但是我在生成的XML中有奇怪的“xsi:type”和“xmlns:xsi”: 所以我的问题是:这是什么意思,如何删除它?