我需要一种很好的方法来从C ++中的XML文档中删除所有命名空间。目前,doc已加载到MSXML2 :: IXMLDOMDocument2Ptr类中。
目前无法看到任何可以执行此操作的方法
由于
答案 0 :(得分:1)
没有直接执行此操作的方法,因为命名空间+ local-name本身就是节点的名称。名称空间不是在属性上添加的。
您需要使用全新的节点重新创建文档,但这可以在XSLT中更轻松地完成:
<xsl:template match='*'>
<xsl:element name='{local-name(.)}'>
<xsl:apply-templates select='*|@*|text()'/>
</xsl:element>
</xsl:template>
<xsl:template match='@*'>
<xsl:attribute name='{local-name(.)}'>
<xsl:value-of select='.'/>
</xsl:attribute>
</xsl:template>
使用默认模板规则处理文本节点,这应该有效(但未经测试)。