在内部标记变化时解析XML

时间:2014-06-20 04:04:15

标签: xml xml-parsing jaxb

我有一个用例,我想在其中解析以下类型的XML文件并从中创建HTML报告。

<?xml version = '1.0'?>
<outer tag>
<first_tag>
  <some Random xml tag>
         <another tag>
         </another tag>
  </some Random xml tag>
</first_tag>
<first_tag>
  <some Random xml tag>
         <another tag>
         </another tag>
  </some Random xml tag>
</first_tag>
<second_tag>
  <some Random xml tag>
         <another tag>
         </another tag>
  </some Random xml tag>
</second_tag>

这种XML结构的问题在于我只知道整个XML将包装在外部标记中,而第二级标记只能是first_tag或second_Tag。我不知道这些二级标签内部会发生什么。

我的html应该是这样的:

  Elements inside outer_tag
      First_tag children 
        " <some Random xml tag>
           <another tag>
           </another tag>
         </some Random xml tag>  "  // XML structure itself 
      First_tag children :

        " <some Random xml tag>
           <another tag>
           </another tag>
         </some Random xml tag>  "  // XML structure itself 
        Second_Tag children :

        " <some Random xml tag>
           <another tag>
           </another tag>
         </some Random xml tag>  "  // XML structure itself 

我尝试了jaxb和其他XML解析器。由于我不知道内部结构,我发现很难写出算法。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,XSL转换会很有用。 XSLT通常用于将XML转换为HTML等其他格式。这是一个可以满足您需求的转换:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output indent="yes"/>
    <xsl:template match="first_tag|second_tag">
        <xsl:copy-of select="./*"/>            
    </xsl:template>
</xsl:transform>

在此处查看:http://xsltransform.net/jyH9rLS