2014-06-30 36 views
0

我想删除所有在xml文档中使用java的命名空间,有没有一种有效的方式来替代所有的方法呢?删除除了replaceall以外的所有XML命名空间使用java

在此先感谢。 Sushma。

+0

是的,将XML解析为对象树,删除命名空间并重新序列化XML。真的,那么全部替换呢? – Smutje

+0

结果如何? – Smutje

+0

嗨,我是新来的java,你能简单地解释一下吗? – Sushma

回答

1

使用正则表达式处理删除名称空间声明可能是可行的,只要您不关心实际上不是名称空间声明(例如,在注释或CDATA部分内)的匹配的小概率。从元素和属性名称中去除前缀​​更加棘手。为什么不使用XSLT轻松实现?它只是需要一个简单的2规则的样式表:

<xsl:template match="*"> 
    <xsl:element name="{local-name()}"> 
    <xsl:apply-templates select="*|@*"/> 
    </xsl:element> 
</xsl:template> 

<xsl:template match="@*"> 
    <xsl:attribute name="{local-name()}"> 
    <xsl:value-of select=."/> 
    </xsl:attribute> 
</xsl:template> 

,如果你发现你需要做的比这,例如更多您可以添加更多规则将名称空间保留在xml:base或xsi:schemaLocation属性上。