使JAXB生成XML处理指令
我正在使用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' ?>");
以上是 使JAXB生成XML处理指令 的全部内容, 来源链接: utcz.com/qa/399504.html