【问题标题】:Parsing xml to html in Java在Java中将xml解析为html
【发布时间】:2011-09-06 13:36:59
【问题描述】:

我搜索了许多 Java API 来将 xml 解析为 HTML,但从我开始的地方开始感到困惑。我从来没有做过任何 xml 到 html 的解析任务。这是以 xml 数据形式解析第 3 方的简历的输出,我必须将其转换为 html。

最好的问候

【问题讨论】:

    标签: html xml parsing xml-parsing


    【解决方案1】:

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

    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),这使得解析、转换和保存结果文件变得透明。

    【讨论】:

      【解决方案2】:

      免责声明:我为 Sovren 工作,这是一家简历/CV 解析器供应商。

      一般有两种将简历/简历转换为 HTML 的方法:

      1. 直接从原始格式(DOC、DOCX、RTF 等)转换为 HTML,保留原始 Resume/CV 的布局和外观。有许多通用文档转换工具可以做到这一点。一些 Resume/CV Parser 供应商在他们的产品中包含了这个功能(Sovren 有)。

      2. 解析简历/简历以将数据提取为 XML 等结构化格式,然后将该 XML 转换为 HTML。这种方法的优点是能够将各种各样的简历/简历布局转换为用户的通用“品牌”布局。请咨询您的简历/CV 解析供应商,看看他们是否提供用于将其 XML 转换为 HTML、RTF 等的 XSLT 模板。Parsing-Resume/CV-to-XML,然后是 Transforming-XML-to-HTML 的过程可以消除过度90% 的手动工作,但请注意,您不应计划将此过程 100% 自动化。即使是最好的 Resume/CV 解析器也难以解释 一些 Resumes/CV,因此会有一些奇怪的结果,并且您需要人工验证/编辑结果,然后再显示生成的 HTML Resume/给客户的简历。

      Sovren 提供用于将其 XML 转换为其他格式的入门 XSLT 模板。我无法提供完整的 XSLT 模板,但这是一个重写的 XSLT 模板子集,用于将 ContactInfo 数据从 HR-XML Resume 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>
      

      【讨论】:

      • Piper 很好的实现我遇到了RChilli 并为我们的客户集成了它们。它们的结构非常简单。 ..必须尝试。关于 Hireability,它很简单,但有一段时间让我们很难处理嵌套的事情。 Daxtra 易于集成,产品也很棒..
      猜你喜欢
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      相关资源
      最近更新 更多