java xml文件作为参数_java-将xml文档作为参数传递给xsl

我读了很多文章,尝试了很多事情,但仍然无法通过xsl在参数中找到值.我从java的sun xalan开始,但是从来没有运行过,所以我改用saxon徒劳无功.我想将两个xml文档与xls合并为一个.永远不会在文件系统上,这是用于构建xml字符串/ docs的Web应用程序.我尝试将DTMAxisIterator,DomSource,Doc传递给以xsl,字符串设置的Node.使用xsl document()在NotePad中运行良好,但我不想将xml保存在系统上.

XSL

XML一

XML二

001

FORD

WINDSTAR

1999

ES

23660

1

6

4-WHEEL STD

MI

PASS-KEY

BOTH

public String transformResultXML(String xmlSource, Templates xsl,String policyXml ) {

String result = "";

try {

StringWriter writer = new StringWriter();

StringReader reader2 = new StringReader(policyXml);

XmlHelper xh = new XmlHelper();

Document xmlSrc = xh.loadDoc(xmlSource);

DOMSource source = new DOMSource(xmlSrc);

ByteArrayInputStream byteStream = new ByteArrayInputStream(xmlSource.getBytes());

StringReader reader = new StringReader(xmlSource);

SAXSource source2 = new SAXSource(new XMLFilterImpl(), new InputSource(reader));

TransformerFactory transFact = new com.icl.saxon.TransformerFactoryImpl();

Transformer transformer = transFact.newTransformer();

transformer.setParameter("RsXml",source2);

// transformer.setParameter("RsXml",xmlSrc);

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

transformer.transform(new javax.xml.transform.stream.StreamSource(reader2),

new javax.xml.transform.stream.StreamResult(writer));

result = writer.toString();

System.out.println(result);

} catch( Exception e ) {

e.printStackTrace();

}

return result;

}

解决方法:

我能够与Saxon一起使用,请参见下面的代码.我认为关键是document.getDocumentElement()作为parm

public String transformResultXML(String xmlSource, Templates xsl,String policyXml ) {

String result = "";

try {

StringWriter writer = new StringWriter();

StringReader reader2 = new StringReader(policyXml);

DocumentBuilderFactory dfactory =

DocumentBuilderFactory.newInstance( "com.icl.saxon.om.DocumentBuilderFactoryImpl",null);

dfactory.setNamespaceAware(true);

DocumentBuilder docBuilder = dfactory.newDocumentBuilder();

org.w3c.dom.Document document = docBuilder.parse(new InputSource(new StringReader(xmlSource)));

Transformer transformer = xsl.newTransformer();

transformer.setParameter("RsXml", document.getDocumentElement());

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

transformer.transform(new javax.xml.transform.stream.StreamSource(reader2),

new javax.xml.transform.stream.StreamResult(writer));

result = writer.toString();

System.out.println(result);

} catch( Exception e ) {

e.printStackTrace();

}

XSL代码段

标签:saxon,xalan,xml,xslt,java

来源: https://codeday.me/bug/20191031/1977329.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值