2013-01-10 52 views
0

空注释标签我有一个输入XML假设删除使用XSLT

<A> 
    <B></B> 
    <!----> 
    <C></C> 
</A> 

我使用XSL来改造这个XML形式的,但是当我分析这个XML我收到以下错误消息

“错误序列化文件java.lang.ArrayIndexOutOfBoundsException:-1 基本异常”

我在XSL已经包括下面的命令,仍然得到同样的错误

<xsl:template match="comment()"/> 

请帮忙!

TIA :)

+3

它看起来像XML解析器或XSLT处理器中的错误。看到堆栈跟踪将有所帮助;我们需要知道您使用的是哪个XML解析器和XSLT处理器。 –

+0

也许你可以向我们展示你用来解析/转换XML的代码? – JLRishe

回答

1

尝试:

<xsl:template match="comment()[.='']"/> 

示例XML:

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <!----> 
    <!--above comment line should be deleted--> 
    <foo> 
    <!--fooo data--> 
    <foobar/> 
    </foo> 
</root> 

输入XSLT:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="@* | node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="comment()[.='']"/> 
</xsl:stylesheet> 

输出:

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <!--above comment line should be deleted--> 
    <foo> 
    <!--fooo data--> 
    <foobar /> 
    </foo> 
</root> 
+0

谢谢@ infantPro'Arvind'。但我仍然得到相同的异常:“错误序列化文件java.lang.ArrayIndexOutOfBoundsException:-1基本异常” – Vix

+0

@Vix,据我所知,这与XSLT的删除注释方法无关!我添加我的答案的原因是,您的示例XSLT删除了所有注释!在添加''时,只会删除那些没有任何数据的注释标记! –