Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用XSLT将XML输出转换为HTML表_Java_Html_Xml_Xslt_Servlets - Fatal编程技术网

Java 使用XSLT将XML输出转换为HTML表

Java 使用XSLT将XML输出转换为HTML表,java,html,xml,xslt,servlets,Java,Html,Xml,Xslt,Servlets,我有一个java servlet,它从java程序的返回中获取XML字符串。我想将这个XML字符串转换为HTML表(如果可能的话,不是文件),并让我的servlet显示它 对我来说,使用XSLT似乎是一个不错的选择,因此我编写了一个XSL文件。然而,我不知道如何从这里开始。我在网上看到过不同的代码片段,但它们都使用XML文件,而不是另一个程序输出的XML字符串,因此它们对我不起作用。我找不到它的任何东西,我是相当新的后端。。。所以我很感谢你的帮助、想法、链接或其他什么。谢谢 下面是一个你可以做的

我有一个java servlet,它从java程序的返回中获取XML字符串。我想将这个XML字符串转换为HTML表(如果可能的话,不是文件),并让我的servlet显示它


对我来说,使用XSLT似乎是一个不错的选择,因此我编写了一个XSL文件。然而,我不知道如何从这里开始。我在网上看到过不同的代码片段,但它们都使用XML文件,而不是另一个程序输出的XML字符串,因此它们对我不起作用。我找不到它的任何东西,我是相当新的后端。。。所以我很感谢你的帮助、想法、链接或其他什么。谢谢

下面是一个你可以做的例子

XML代码:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
  <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <year>1988</year>
  </cd>
  <cd>
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <country>USA</country>
    <company>RCA</company>
    <price>9.90</price>
    <year>1982</year>
  </cd>
  <cd>
    <title>Still got the blues</title>
    <artist>Gary Moore</artist>
    <country>UK</country>
    <company>Virgin records</company>
    <price>10.20</price>
    <year>1990</year>
  </cd>
  <cd>
    <title>Eros</title>
    <artist>Eros Ramazzotti</artist>
    <country>EU</country>
    <company>BMG</company>
    <price>9.90</price>
    <year>1997</year>
  </cd>
  <cd>
    <title>One night only</title>
    <artist>Bee Gees</artist>
    <country>UK</country>
    <company>Polydor</company>
    <price>10.90</price>
    <year>1998</year>
  </cd>
  <cd>
    <title>Sylvias Mother</title>
    <artist>Dr.Hook</artist>
    <country>UK</country>
    <company>CBS</company>
    <price>8.10</price>
    <year>1973</year>
  </cd>
  <cd>
    <title>Maggie May</title>
    <artist>Rod Stewart</artist>
    <country>UK</country>
    <company>Pickwick</company>
    <price>8.50</price>
    <year>1990</year>
  </cd>
  <cd>
    <title>Romanza</title>
    <artist>Andrea Bocelli</artist>
    <country>EU</country>
    <company>Polydor</company>
    <price>10.80</price>
    <year>1996</year>
  </cd>
  <cd>
    <title>When a man loves a woman</title>
    <artist>Percy Sledge</artist>
    <country>USA</country>
    <company>Atlantic</company>
    <price>8.70</price>
    <year>1987</year>
  </cd>
  <cd>
    <title>Black angel</title>
    <artist>Savage Rose</artist>
    <country>EU</country>
    <company>Mega</company>
    <price>10.90</price>
    <year>1995</year>
  </cd>
  <cd>
    <title>1999 Grammy Nominees</title>
    <artist>Many</artist>
    <country>USA</country>
    <company>Grammy</company>
    <price>10.20</price>
    <year>1999</year>
  </cd>
  <cd>
    <title>For the good times</title>
    <artist>Kenny Rogers</artist>
    <country>UK</country>
    <company>Mucik Master</company>
    <price>8.70</price>
    <year>1995</year>
  </cd>
  <cd>
    <title>Big Willie style</title>
    <artist>Will Smith</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>9.90</price>
    <year>1997</year>
  </cd>
  <cd>
    <title>Tupelo Honey</title>
    <artist>Van Morrison</artist>
    <country>UK</country>
    <company>Polydor</company>
    <price>8.20</price>
    <year>1971</year>
  </cd>
  <cd>
    <title>Soulsville</title>
    <artist>Jorn Hoel</artist>
    <country>Norway</country>
    <company>WEA</company>
    <price>7.90</price>
    <year>1996</year>
  </cd>
  <cd>
    <title>The very best of</title>
    <artist>Cat Stevens</artist>
    <country>UK</country>
    <company>Island</company>
    <price>8.90</price>
    <year>1990</year>
  </cd>
  <cd>
    <title>Stop</title>
    <artist>Sam Brown</artist>
    <country>UK</country>
    <company>A and M</company>
    <price>8.90</price>
    <year>1988</year>
  </cd>
  <cd>
    <title>Bridge of Spies</title>
    <artist>T`Pau</artist>
    <country>UK</country>
    <company>Siren</company>
    <price>7.90</price>
    <year>1987</year>
  </cd>
  <cd>
    <title>Private Dancer</title>
    <artist>Tina Turner</artist>
    <country>UK</country>
    <company>Capitol</company>
    <price>8.90</price>
    <year>1983</year>
  </cd>
  <cd>
    <title>Midt om natten</title>
    <artist>Kim Larsen</artist>
    <country>EU</country>
    <company>Medley</company>
    <price>7.80</price>
    <year>1983</year>
  </cd>
  <cd>
    <title>Pavarotti Gala Concert</title>
    <artist>Luciano Pavarotti</artist>
    <country>UK</country>
    <company>DECCA</company>
    <price>9.90</price>
    <year>1991</year>
  </cd>
  <cd>
    <title>The dock of the bay</title>
    <artist>Otis Redding</artist>
    <country>USA</country>
    <company>Stax Records</company>
    <price>7.90</price>
    <year>1968</year>
  </cd>
  <cd>
    <title>Picture book</title>
    <artist>Simply Red</artist>
    <country>EU</country>
    <company>Elektra</company>
    <price>7.20</price>
    <year>1985</year>
  </cd>
  <cd>
    <title>Red</title>
    <artist>The Communards</artist>
    <country>UK</country>
    <company>London</company>
    <price>7.80</price>
    <year>1987</year>
  </cd>
  <cd>
    <title>Unchain my heart</title>
    <artist>Joe Cocker</artist>
    <country>USA</country>
    <company>EMI</company>
    <price>8.20</price>
    <year>1987</year>
  </cd>
</catalog>

皇帝讽刺剧
鲍勃·迪伦
美国
哥伦比亚
10.90
1985
隐藏你的心
邦尼泰勒
英国
哥伦比亚唱片公司
9.90
1988
最成功的
多莉·帕顿
美国
RCA
9.90
1982
还是那么忧郁吗
加里摩尔
英国
维珍唱片
10.20
1990
爱神
艾罗斯·拉玛佐第
欧盟
BMG
9.90
1997
只有一晚
比基
英国
波利多尔
10.90
1998
西尔维亚的母亲
胡克博士
英国
哥伦比亚广播公司
8.10
1973
玛姬梅
罗德·斯图尔特
英国
匹克威克
8.50
1990
浪漫曲
安德烈·波切利
欧盟
波利多尔
10.80
1996
当一个男人爱上一个女人
当男人爱上女人
美国
大西洋
8.70
1987
黑天使
野玫瑰
欧盟
巨大的
10.90
1995
1999年格莱美提名
许多的
美国
格莱美
10.20
1999
为了美好的时光
肯尼·罗杰斯
英国
穆西克大师
8.70
1995
大威利风格
威尔·史密斯
美国
哥伦比亚
9.90
1997
土波罗蜜
范莫里森
英国
波利多尔
8.20
1971
索尔斯维尔
乔恩·霍尔
挪威
威阿
7.90
1996
最好的
凯特·斯蒂文斯
英国
岛
8.90
1990
停止
萨姆·布朗
英国
A和M
8.90
1988
间谍桥
T`Pau
英国
汽笛
7.90
1987
私人舞蹈家
蒂娜·特纳
英国
国会大厦
8.90
1983
纳顿中期
基姆·拉尔森
欧盟
混合泳
7.80
1983
帕瓦罗蒂庆典音乐会
鲁契亚诺·帕瓦罗蒂
英国
德卡
9.90
1991
海湾的码头
奥蒂斯·雷丁
美国
斯塔克斯唱片公司
7.90
1968
图画书
纯红色
欧盟
埃列克特拉
7.20
1985
红色
公社
英国
伦敦
7.80
1987
释放我心
乔·库克
美国
电磁干扰
8.20
1987
XSLT代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html> 
<body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

我的CD收藏
标题
艺术家

您可以使用JAXP API,package
javax.xml.transform

以下是我使用的代码:

public static void doXsltTransform( StreamSource sourceXml, StreamSource xslt, StreamResult resultXml ) throws TransformerException {
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer( xslt );
    transformer.setOutputProperty( OutputKeys.ENCODING, "UTF-8" );
    transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
    transformer.transform( sourceXml, resultXml );
}
你可以这样调用它:

    InputStream inputStream = // some input stream from whereever
    OutputStream out = // where you want to write the XML/HTML

    StreamSource sourceXml = new StreamSource( inputStream );
    StreamSource xslt = new StreamSource( inpStreamOfYourXSLT );
    StreamResult resultXml = new StreamResult( out );
    doXsltTransform( sourceXml, xslt, resultXml );
这些是进口产品:

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

这就是我已经拥有的!我只是不知道如何将XSLT和XML(输出)与我的servlet放在一起并显示HTML。也许应该对您有所帮助。这里还有一些很好的信息: