2011-09-06 129 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 .. –