我想借助 XSLT 将 XML 文件转换为 HTML 文件。但是我收到一个错误,即
javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: Invalid byte 1 of 1-byte UTF-8 sequence.
XML文件
<?xml version="1.0"?>
<Company>
<Info>
<EmpId>1</EmpId>
<EmpName>John</EmpName>
<Age>25</Age>
<Salary>20000</Salary>
</Info>
<Info>
<EmpId>2</EmpId>
<EmpName>Tony</EmpName>
<Age>27</Age>
<Salary>23000</Salary>
</Info>
<Info>
<EmpId>3</EmpId>
<EmpName>Eithen</EmpName>
<Age>29</Age>
<Salary>25000</Salary>
</Info>
</Company>
XSL文件
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<h1>Company Details</h1>
<table border="1">
<tr>
<th>EmpId</th>
<th>EmpName</th>
<th>Age</th>
<th>Salary</th>
</tr>
<xsl:for-each select="Company/Info">
<tr>
<td>
<xsl:value-of select="EmpId" />
</td>
<td>
<xsl:value-of select="EmpName" />
</td>
<td>
<xsl:value-of select="Age" />
</td>
<td>
<xsl:value-of select="Salary" />
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Java代码
public class TransInfoHtml
{
public static void main(String args[])
{
try {
TransformerFactory tFactory=TransformerFactory.newInstance();
Source xslDoc=new StreamSource("files/NewStylesheet.xsl");
Source xmlDoc=new StreamSource("D:/Demo.xml");
String outputFileName="CompanyInfo.html";
OutputStream htmlFile=new FileOutputStream(outputFileName);
Transformer trasform=tFactory.newTransformer(xslDoc);
trasform.transform(xmlDoc, new StreamResult(htmlFile));
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (TransformerConfigurationException e)
{
e.printStackTrace();
}
catch (TransformerFactoryConfigurationError e)
{
e.printStackTrace();
}
catch (TransformerException e)
{
e.printStackTrace();
}
}
}
最佳答案
对我来说,这看起来像是一个编码问题。尽量确保文件在所有情况下都正确编码。
例如,将 encoding="UTF-8"
添加到您的 XML 和 XSLT 文件中。但请注意,这只是一个声明 - 它不会更改字符本身。
此外,您可以将 XML 内容复制到一个简单的编辑器中,并将其显式保存为 UTF-8。 例如,如果您使用的是 Windows,请将内容复制到记事本中,然后点击“另存为...”。在文件对话框中,您可以从下拉列表中选择“UTF-8”。
关于java - 如何在 Java 中使用 XSLT 将 XML 转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811581/