gpt4 book ai didi

C++ MSXML2 - 从 XML 中删除 namespace

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:32 27 4
gpt4 key购买 nike

我需要一种能够从 C++ 中的 XML 文档中删除所有命名空间的好方法。当前,该文档已加载到 MSXML2::IXMLDOMDocument2Ptr 类中。

目前看不到任何可以做到这一点的方法

谢谢

最佳答案

没有办法直接做,因为namespace+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>

使用默认模板规则来处理文本节点,这应该可以工作(但未经测试)。

关于C++ MSXML2 - 从 XML 中删除 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com