如何从XML复制节点,而不使用XSLT复制该节点的子节点?
我需要处理一个庞大的XML,但我只需要根目录中的几个节点。问题是,在那个节点中,我有一个子节点需要删除。有人想解释一下这是否可行,如果可行,怎么做? 这是我得到的XML示例:如何从XML复制节点,而不使用XSLT复制该节点的子节点?,xml,xslt,Xml,Xslt,我需要处理一个庞大的XML,但我只需要根目录中的几个节点。问题是,在那个节点中,我有一个子节点需要删除。有人想解释一下这是否可行,如果可行,怎么做? 这是我得到的XML示例: <XML> <Properties> Contend </Properties> <Events> Contend </Events> <Contracts> Contend </Contracts> &l
<XML>
<Properties>
Contend
</Properties>
<Events>
Contend
</Events>
<Contracts>
Contend
</Contracts>
<Trades>
Contend
</Trades>
<Deals>
<Deal>
<Edition>
<Object>
<Values>
<Value>N</Value>
<Value>N</Value>
</Values>
</Object>
<Members>
<memberValue>
<member>template</member>
<member>template</member>
<member>
<Object>
<Flows>
<Cupom>
<Period>
<Calculation>
<Data>N</Data>
<Data>N</Data>
<Rate>
<Data>N</Data>
<Data>N</Data>
<observations>
Tons of Contend
</observations>
</Rate>
</Calculation>
</Period>
</Cupom>
<Cupom>
<Period>
<Calculation>
<Data>N</Data>
<Data>N</Data>
<Rate>
<Data>N</Data>
<Data>N</Data>
<observations>
Tons of Contend
</observations>
</Rate>
</Calculation>
</Period>
</Cupom>
<Cupom>
<Period>
<Calculation>
<Data>N</Data>
<Data>N</Data>
<Rate>
<Data>N</Data>
<Data>N</Data>
<observations>
Tons of Contend
</observations>
</Rate>
</Calculation>
</Period>
</Cupom>
<Cupom>
<Period>
<Calculation>
<Data>N</Data>
<Data>N</Data>
<Rate>
<Data>N</Data>
<Data>N</Data>
<observations>
Tons of Contend
</observations>
</Rate>
</Calculation>
</Period>
</Cupom>
</Flows>
</Object>
</member>
</memberValue>
</Members>
</Edition>
</Deal>
</Deals>
</XML>
竞争
竞争
竞争
竞争
N
N
模板
模板
N
N
N
N
成吨的货物
N
N
N
N
成吨的货物
N
N
N
N
成吨的货物
N
N
N
N
成吨的货物
我需要保留de节点,但在内部,我需要删除一个。请注意,该节点在每个节点中重复。所有这些都必须移除
最后,我的XML应该是这样的:
<XML>
<Deals>
<Deal>
<Edition>
<Object>
<Values>
<Value>N</Value>
<Value>N</Value>
</Values>
</Object>
<Members>
<memberValue>
<member>template</member>
<member>template</member>
<member>
<Object>
<Flows>
<Cupom>
<Period>
<Calculation>
<Data>N</Data>
<Data>N</Data>
<Rate>
<Data>N</Data>
<Data>N</Data>
</Rate>
</Calculation>
</Period>
</Cupom>
<Cupom>
<Period>
<Calculation>
<Data>N</Data>
<Data>N</Data>
<Rate>
<Data>N</Data>
<Data>N</Data>
</Rate>
</Calculation>
</Period>
</Cupom>
<Cupom>
<Period>
<Calculation>
<Data>N</Data>
<Data>N</Data>
<Rate>
<Data>N</Data>
<Data>N</Data>
</Rate>
</Calculation>
</Period>
</Cupom>
<Cupom>
<Period>
<Calculation>
<Data>N</Data>
<Data>N</Data>
<Rate>
<Data>N</Data>
<Data>N</Data>
</Rate>
</Calculation>
</Period>
</Cupom>
</Flows>
</Object>
</member>
</memberValue>
</Members>
</Edition>
</Deal>
</Deals>
</XML>
N
N
模板
模板
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
非常感谢任何能帮忙的人
干杯 此转换:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*/*[not(self::Deals)] | Cupom/*/*/*/observations"/>
</xsl:stylesheet>
对提供的XML文档执行时,会生成所需的结果。此转换:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*/*[not(self::Deals)] | Cupom/*/*/*/observations"/>
</xsl:stylesheet>
对提供的XML文档执行时,生成所需的结果。编辑您的问题并重新标记您的文档示例。好问题(+1)。请参阅我的简短回答,完全是本着XSLT解决方案的精神。我还格式化了您的XML文档,以便重新阅读者可以看到。代码的格式不合适吗?如果是的话,我很抱歉。我将阅读张贴规则和新手提示。许多坦克的答案。编辑您的问题,并重新标记您的文档样本。好问题(+1)。请参阅我的简短回答,完全是本着XSLT解决方案的精神。我还格式化了您的XML文档,以便重新阅读者可以看到。代码的格式不合适吗?如果是的话,我很抱歉。我将阅读张贴规则和新手提示。许多坦克的答案。好的答案和良好的编辑!此外,我没有看到其他
观察值元素。我猜表达式Cupom/*/*/*/*/observations
是为了清楚起见。@Alexandro,是的,它可能只是match=“observations”
——我只是没有时间仔细检查完整的大文档。:)好答案,好编辑!此外,我没有看到其他观察值元素。我猜表达式Cupom/*/*/*/*/observations
是为了清楚起见。@Alexandro,是的,它可能只是match=“observations”
——我只是没有时间仔细检查完整的大文档。:)