gpt4 book ai didi

xml - 让JAXB生成一条XML处理指令

转载 作者:数据小太阳 更新时间:2023-10-29 01:46:30 24 4
gpt4 key购买 nike

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

现在,我想使用 XSL 将其转换为 HTML。我怎样才能包括

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

在动态生成的 XML 中?

最佳答案

这里的所有解决方案都非常丑陋和冗长。只需在指定附加 header 的 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' ?>");

关于xml - 让JAXB生成一条XML处理指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com