我正在尝试使用 XSLT 将 html 内容抓取到 xml 结构中,我使用 XALAN(CLI)针对 html 测试了我的 xslt,当我对结果感到满意时,我获取了 xslt 文件并使用转换器从 java 代码中使用它( javax.xml.transform.TransformerFactory),下面是看起来类似于真实代码和样式表的测试值。
我的 html 示例数据:
<html><body class='home'>
<div >Welcome !!</div>
<table border='0'><tr><td colspan='2'>asdas</td></tr>
<tr><td class='footer' colspan='2' align='center'>Disclaimer: The information provided below is for informative purpose only and it is not a legal document.</td></tr>
<tr><td colspan='2'>test;</td></tr>
<tr><td class='Home' width='50%' aligh='center'> number:</td><td class='Home' width='50%' aligh='center'>515120</td></tr><tr><td class='Home' width='50%' aligh='center'>Connection :</td><td class='Home' width='50%' aligh='center'>123.23</td></tr><tr><td class='Home'>period (month / year):</td><td class='Home'>04/2012</td></tr><tr><td class='Home'>Date:</td><td class='Home'>APRIL 08,2012, 21:35</td></tr> </table>
</body>
</html>
我唯一的 xsl 模板是:
<xsl:template match="*">
<usage_channel>
<head><xsl:value-of select="//div/text()" /></head>
<body><xsl:value-of select="//td/font/text()" /></body>
<footer><xsl:value-of select="body/table/tr[contains(td,'number')]/td[1]/text()" /></footer>
</usage_channel>
</xsl:template>
使用 XALAN (cli) 的结果:
<?xml version="1.0" encoding="UTF-8"?><usage_channel><head>Welcome !!</head><body/><footer> number:</footer></usage_channel>
使用 Java 转换器的结果:
<?xml version="1.0" encoding="UTF-8"?>
<usage_channel>
<head>Welcome !!</head>
<body/>
<footer/>
</usage_channel>
我尝试了所有希望捕捉 td 中的值的组合,但我失败了,这里缺少什么?