如何使用java从xml文件中获取最后5个元素

时间:2014-12-05 08:52:15

标签: java xml xslt

我有一个XML文件,格式如下:

  <CodeSnippet>
  <Code tag="class eclipse">
  <Snippet>sample</Snippet>
  <TimeStamp>05/11/2014 13:50:36</TimeStamp>
  </Code>
  <Code tag="button java">
  <Snippet>Sample code</Snippet>
  <TimeStamp>05/11/2014 12:36:36</TimeStamp>
  </Code>
  .
  .
  .  
  </CodeSnippet> 

我想知道,如何检索根节点“CodeSnippet”的最后5个子节点,并在标签“Snippet”中显示文本。

4 个答案:

答案 0 :(得分:1)

了解如何在java中使用XPATH表达式http://howtodoinjava.com/2012/11/07/how-to-work-with-xpaths-in-java-with-examples/

针对您的特定问题,使用xpath表达式//CodeSnippet/Snippet获取所有代码段节点。完成后,从nodes.length运行for循环到nodes.length-5。

答案 1 :(得分:1)

尝试类似:

XSLT 1.0

<xsl:stylesheet version="1.0"   
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/">
    <root>
        <xsl:for-each select="CodeSnippet/Code[position() > last() - 5]">
            <xsl:copy-of select="Snippet"/>
        </xsl:for-each>
    </root>
</xsl:template>

</xsl:stylesheet> 

您没有说出输出的确切格式应该是什么。以上将产生以下形式的XML文档:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <Snippet>V</Snippet>
  <Snippet>W</Snippet>
  <Snippet>X</Snippet>
  <Snippet>Y</Snippet>
  <Snippet>Z</Snippet>
</root>

答案 2 :(得分:0)

这是使用三种不同技术的XML Parsing for Java的优秀教程。在你的情况下,我会推荐你​​DOM选项,即使我看到SAX是最简单的。只是尝试为您的案例进行更改。

http://www.javacodegeeks.com/2013/05/parsing-xml-using-dom-sax-and-stax-parser-in-java.html

有一个很好的代码!

答案 3 :(得分:0)

如果您可以使用XPath 2.0处理器,则可以使用以下XPath:

subsequence(//Snippet,count(//Snippet)-5)