如何从XML复制节点,而不使用XSLT复制该节点的子节点?

如何从XML复制节点,而不使用XSLT复制该节点的子节点?,xml,xslt,Xml,Xslt,我需要处理一个庞大的XML,但我只需要根目录中的几个节点。问题是,在那个节点中,我有一个子节点需要删除。有人想解释一下这是否可行,如果可行,怎么做? 这是我得到的XML示例: <XML> <Properties> Contend </Properties> <Events> Contend </Events> <Contracts> Contend </Contracts> &l

我需要处理一个庞大的XML,但我只需要根目录中的几个节点。问题是,在那个节点中,我有一个子节点需要删除。有人想解释一下这是否可行,如果可行,怎么做? 这是我得到的XML示例:

    <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”
——我只是没有时间仔细检查完整的大文档。:)