2015-11-12 84 views
1

我下面this link 我想转换一个XML到csv 我有一个XML和书面和XSL它与HREF来在Internet Explorer 但乳宁在了xsl工作 开通XML代码从this link返回一个错误 无法解析名称空间前缀:xmlns转换XML使用XSL的Java以csv

应该解决什么问题?

我有一个使用XML & XSL

XML

<?xml version='1.0' encoding='utf-8'?> 

    <?xml-stylesheet type="text/xsl" href="student2.xsl"?> 
    <rankings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ign="http://api.DomainName.com/2.0" count="438" total="438" offset="0" xsi:schemaLocation="http://api.DomainName.com/2.0 http://api.DomainName.com/2.0/api.xsd" > 
     <ranking keyword="80s fancy dress"> 
    <ranks> 
     <rank week="201526" country="uk" searchengine="google_uk_en">NR</rank> 
     <rank week="201527" country="uk" searchengine="google_uk_en">NR</rank> 
     <rank week="201528" country="uk" searchengine="google_uk_en">NR</rank> 
     <rank week="201529" country="uk" searchengine="google_uk_en">NR</rank> 
     <rank week="201530" country="uk" searchengine="google_uk_en">NR</rank> 
     <rank week="201531" country="uk" searchengine="google_uk_en">NR</rank> 
    </ranks> 
    </ranking> 
</rankings> 

XSL

<?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://api.DomainName.com/2.0" exclude-result-prefixes=xmlns> 
    <xsl:output method="text" encoding="UTF-8" omit-xml-declaration="yes" indent="yes" /> 

<xsl:template match="/"> 
<html> 
<body> 
<table border="1"> 
<tr bgcolor="#9acd32"> 
</tr> 
<xsl:for-each select="rankings/ranking/ranks/rank"> 
<tr> 
<keyword><xsl:value-of select="../../@keyword"/></keyword> 
<xsl:text>,</xsl:text> 
<week><xsl:value-of select="@week"/></week> 
<xsl:text>,</xsl:text> 
<country><xsl:value-of select="@country"/></country> 
<xsl:text>,</xsl:text> 
<searchengine><xsl:value-of select="@searchengine"/></searchengine> 
<xsl:text>,</xsl:text> 
<rank><xsl:value-of select="../rank"/></rank> 
<xsl:value-of select="." /> 
<xsl:text>&#10;</xsl:text> 
</tr> 
</xsl:for-each> 
</table> 
</body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

java代码

从上面的链接 运行的Java代码后,我得到一个错误

(Location of error unknown)org.xml.sax.SAXException: Can not resolve namespace prefix: xmlns 
Exception in thread "main" java.lang.NullPointerException 
    at org.apache.xalan.transformer.TransformerImpl.createSerializationHandler(TransformerImpl.java:1171) 
    at org.apache.xalan.transformer.TransformerImpl.createSerializationHandler(TransformerImpl.java:1060) 
    at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1268) 
    at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1251) 
+1

如果你想将.csv作为你的输出,你为什么要构造一个带有

的HTML文档? –

回答

1

应该怎样解决这个问题?

要消除错误,您需要删除此:

exclude-result-prefixes=xmlns 

xsl:stylesheet标签。您还需要删除默认的命名空间声明:

xmlns="http://api.DomainName.com/2.0" 

,否则所有的输出将被放置在该命名空间,您如果肯定不希望发生的事情 - 因为它似乎 - 你希望它是HTML 。

您还需要进行其他更改 - 例如,如果要输出HTML表格,请将输出方法设置为“html”而不是“text”,并确保您的表格结构有效。


注意

你的XML声明命名空间:xmlns:ign="http://api.DomainName.com/2.0"但这个命名空间声明没有任何地方使用。因此你的样式表可以忽略它。只要您向我们展示真实XML的代表性样本。