我想用java移除xml文档中的所有命名空间,有没有比全部替换方法更有效的方法呢?
提前谢谢。寿司马。
发布于 2014-06-30 14:40:10
使用正则表达式处理删除名称空间声明可能是可行的,只要您不关心匹配实际上不是名称空间声明的内容(例如,在注释或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属性上。
https://stackoverflow.com/questions/24483936
复制相似问题