2015-04-14 54 views

回答

0

我在我的一個應用程序中有完全相同的要求。您可以通過將序列化的XOM文檔包裝到代碼標記中並轉義尖括號來完成此操作。下面的示例代碼顯示了一種方法:

 public String getHTMLDoc(Document document) { 
     try { 
      // create a new div to hold your document 
      StringBuilder sb = new StringBuilder("<div id=\"xom\" style=\"font-family: 'Courier New', monospace; white-space: pre-wrap\"><pre>\n"); 
      // Create an array of strings with one string for each line in the document 
      ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
      Serializer writer = new Serializer(bout, "UTF-8"); 
      writer.setIndent(4); 
      writer.write(document); 
      writer.flush(); 
      String xomString = bout.toString("UTF-8"); 
      String[] lines = xomString.split(writer.getLineSeparator()); 
      for (int i = 0; i < lines.length; i++) { 
       sb.append(convertLine(lines[i])); 
      } 
      sb.append("</pre></div>\n"); 
     } catch (IOException ex) { 
      // handle the error 
     } 
     return sb.toString(); 
    } 

    private String convertLine(String s) { 
     // wrap the line in a code tag 
     StringBuilder sb = new StringBuilder("<code>"); 
     // Remove trailing whitespace 
     Pattern trailingWhiteSpace = Pattern.compile("[ \t\n\f\r]+$"); 
     Matcher m = trailingWhiteSpace.matcher(s); 
     sb.append(m.replaceAll("")); 
     // Change all angle brackets "<" and ">" 
     sb.append(line.replaceAll(">", "&gt;").replaceAll("<", "&lt;")); 
     sb.append("</code>\n"); 
     return sb.toString(); 
    } 
相關問題