在 xml 层次结构 JAVA 中查找特定节点
Finding a specific node in xml hierarchy JAVA
我正在使用 SAX 转换 XML 文档并使用 xsl:stylesheet 删除节点(感谢 teppic)。我不熟悉 XML 无法理解如何编辑文档。
xsl:
<!-- Copy -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- Strip IMFile elements -->
<xsl:template match="IMFile"/>
这是获取IMFile的所有节点并完美删除它们。我现在需要搜索类型的节点:Callout 并查看其 VectorNode 值的任何子节点是否等于 TypeWinText,如果是,则删除整个 Callout 节点。如果不是 - 什么也不做。
Project_Data Version="8.00">
<CSMLData>
<GoProject id="1" version="3.0" > <Project id="2" editRate="30/1" version="3.0" >
<Timeline id="6" >
<GenericMixer id="10" name="Unified Mixer">
<Tracks>
<GenericTrack id="11" >
<Medias>
<Callout id="91" start="55" duration="20" scalar="1/1" mediaStart="25/1" mediaDuration="20/1" >
<Attributes>
<Attribute id="130" name="vectorNode">
<VectorNode id="131" kind="TypeWinSVG" > </VectorNode>
Callout节点在什么位置,能具体点吗?
要搜索节点是否具有属性 x,您可以执行以下操作:
<xsl:template match="Keyframes">
<xsl:choose>
<xsl:when test="Keyframe/@value='x'">
//do what you want for example
<xsl:value-of select="Keyframe/@value>
// this will print "x"
</xsl:when>
</xsl:choose>
</xsl:template>
您可以通过
应用模板
<xsl:apply-templates select="Keyframes"/>
考虑添加另一个空模板以根据特定条件删除标注:
<xsl:template match="Callout[descendant::VectorNode/@kind='TypeWinText']"/>
我正在使用 SAX 转换 XML 文档并使用 xsl:stylesheet 删除节点(感谢 teppic)。我不熟悉 XML 无法理解如何编辑文档。
xsl:
<!-- Copy -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!-- Strip IMFile elements -->
<xsl:template match="IMFile"/>
这是获取IMFile的所有节点并完美删除它们。我现在需要搜索类型的节点:Callout 并查看其 VectorNode 值的任何子节点是否等于 TypeWinText,如果是,则删除整个 Callout 节点。如果不是 - 什么也不做。
Project_Data Version="8.00">
<CSMLData>
<GoProject id="1" version="3.0" > <Project id="2" editRate="30/1" version="3.0" >
<Timeline id="6" >
<GenericMixer id="10" name="Unified Mixer">
<Tracks>
<GenericTrack id="11" >
<Medias>
<Callout id="91" start="55" duration="20" scalar="1/1" mediaStart="25/1" mediaDuration="20/1" >
<Attributes>
<Attribute id="130" name="vectorNode">
<VectorNode id="131" kind="TypeWinSVG" > </VectorNode>
Callout节点在什么位置,能具体点吗?
要搜索节点是否具有属性 x,您可以执行以下操作:
<xsl:template match="Keyframes">
<xsl:choose>
<xsl:when test="Keyframe/@value='x'">
//do what you want for example
<xsl:value-of select="Keyframe/@value>
// this will print "x"
</xsl:when>
</xsl:choose>
</xsl:template>
您可以通过
应用模板<xsl:apply-templates select="Keyframes"/>
考虑添加另一个空模板以根据特定条件删除标注:
<xsl:template match="Callout[descendant::VectorNode/@kind='TypeWinText']"/>