2011-09-06 126 views
-3

我GOOGLE了很多Java API来解析XML转换成HTML,但我从哪里开始困惑。我从来没有做任何XML解析任务。这是恢复解析第三方形式的XML数据输出,我必须将其转换为HTML。解析XML到HTML Java中

问候

回答

1

没有看看XSLT“解析为html”,也许你的意思是“转换为HTML”,在这种情况下服用。

XSLT是一种语言(用XML自己编写)将XML转换为另一种XML,而XHTML恰好是一种XML,所以使用XSLT可以从一种转换为另一种。

至于Java库来使用,你可以直接在JRE,即javax.xml.transform.TransformerFactory中和相关类使用类。否则,您可以直接使用XALAN(请参阅http://xalan.apache.org)或SAXON或Cocoon 3(http://cocoon.apache.org),它可以解析,转换并保存结果文件。

1

声明:我Sovren工作,简历/ CV分析器供应商。

通常有一个简历/ CV转换成HTML两种方法:直接从原始格式(DOC,DOCX,RTF,等)转换成HTML

  1. 转换,保留布局和外观原始的简历/简历。有许多通用文件转换工具可以做到这一点。一些简历/简历解析器供应商在其产品中包含了此功能(Sovren)。

  2. 解析恢复/ CV的数据提取到XML等结构化格式,然后变换成XML HTML。这种方法的优点是能够将各种各样的Resume/CV布局转换为用户的常见“品牌”布局。请咨询您的Resume/CV解析供应商,看他们是否提供用于将其XML转换为HTML,RTF等的XSLT模板。解析 - 恢复/ CV到XML然后转换XML到HTML的过程可以消除90%的人工努力,但要注意,您不应该计划将此过程作为100%自动化。即使是最好的Resume/CV解析器在解释一些 Resumes/CV时也会遇到问题,因此会出现一些奇怪的结果,并且您需要人工在将生成的HTML Resume/CV显示给客户端之前验证/编辑结果。

Sovren提供了用于将XML转换为其他格式的入门XSLT模板。我不能提供一个完整的XSLT模板,但这里是一个XSLT模板从HR-XML转换的ContactInfo数据重写的子集恢复到2.5 HTML:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
       xmlns="http://www.w3.org/1999/xhtml" 
       xmlns:hr="http://ns.hr-xml.org/2006-02-28" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
       exclude-result-prefixes="xsl xsi hr"> 

    <xsl:output method="xml" 
     media-type="text/html" 
     doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
     doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" 
     indent="yes" 
     encoding="utf-8"/> 

    <xsl:template match="/"> 
     <html> 
      <head> 
       <title>HTML Resume from HR-XML Resume 2.5</title> 
       <style type="text/css"> 
        body { font-family: sans-serif; font-size: 10pt } 
        th { font-family: sans-serif; font-size: 10pt; font-weight: bold; padding-right: 16px; text-align: left;} 
        td { font-family: sans-serif; font-size: 10pt; padding-right:16px; } 
        h1 { font-family: sans-serif; font-size: 12pt; background-color: #FFFFCC; margin-top: 20px } 
        h2 { font-family: sans-serif; font-size: 10pt; font-style: bold; margin-top: 20px } 
       </style> 
      </head> 
      <body> 
       <p> 
        <img src="Logo.png" alt="" /> 
       </p> 
       <xsl:for-each select="/hr:Resume/hr:StructuredXMLResume/hr:ContactInfo"> 
        <h1>CONTACT INFORMATION</h1> 
        <p> 
         <b> 
          <xsl:value-of select="hr:PersonName/hr:FormattedName"/> 
         </b> 
         <br/> 
         <xsl:for-each select=".//hr:PostalAddress"> 
          <xsl:text>Location: </xsl:text> 
          <xsl:value-of select="hr:Municipality"/> 
          <xsl:if test="string-length(hr:Municipality) > 0 and string-length(hr:Region) > 0"> 
           <xsl:text>, </xsl:text> 
          </xsl:if> 
          <xsl:value-of select="hr:Region"/> 
          <xsl:if test="string-length(hr:Municipality) > 0 or string-length(hr:Region) > 0"> 
           <xsl:text>&#160;</xsl:text> 
          </xsl:if> 
          <xsl:value-of select="hr:CountryCode"/> 
         </xsl:for-each> 
         <br/> 
         <xsl:for-each select=".//hr:InternetEmailAddress"> 
          Email: <a href="mailto:"><xsl:value-of select="."/></a> 
          <br/> 
         </xsl:for-each> 
         <xsl:for-each select=".//hr:Telephone/hr:FormattedNumber"> 
          Phone: <xsl:value-of select="."/> 
          <br/> 
         </xsl:for-each> 
         <xsl:for-each select=".//hr:Mobile/hr:FormattedNumber"> 
          Mobile: <xsl:value-of select="."/> 
          <br/> 
         </xsl:for-each> 
         <xsl:for-each select=".//hr:Fax/hr:FormattedNumber"> 
          Fax: <xsl:value-of select="."/> 
          <br/> 
         </xsl:for-each> 
        </p> 
       </xsl:for-each> 
      </body> 
     </html> 
    </xsl:template> 

</xsl:stylesheet> 
+0

派好的实现我碰到[RChilli]来了(HTTP ://www.rchilli.com)并将它们整合到我们的客户端。他们的结构非常简单。必须尝试。关于就业能力,其简单但有时会给我们困难的时间嵌套的东西。 Daxtra很容易整合和伟大的prouct .. –